資源簡介
通用接口實現類LinkJOS
擴展于:public class LinkJOS extends LinkOAuth2(LinkOAuth2 extends JspEasy)
構造函數
LinkJOS(HttpServletRequest request,HttpServletResponse response)
京東JOS接口訪問函數
public String link2(String link,String method,Bag sys,Bag apps,String appSecret,String file,String FileField)
作用:訪問京東JOS平臺的所有接口
參數:
String link,京東JOS平臺接口訪問地址,目前固定為:https://api.jd.com/routerjson
String method,向京東JOS平臺提交數據時的方法,需要應用級別參數時建議用POST方法,不需要時用GET(參見后邊的實例)
Bag sys,系統級別參數書包(一般只需在接口參數文件中放入接口方法即可,參見后邊的實例)
Bag apps,應用級別參數書包(在接口參數文件中放入必須的應用級別參數,若不需要應用級別參數時直接用new Bag(-1)構造一個空書包即可,參見后邊的實例)
String appSecret,應用證書中的App Secret,前邊已經設置,固定用"@{pPage:app_secret}"即可
String file,調用上傳文件接口上傳文件(如圖片)到京東JOS平臺時的文件全名(含相對路徑,如:images/logo.png),不是調用上傳文件接口時為空字符串即可(參見后邊的實例)
String FileField,調用上傳文件接口上傳文件(如圖片)到京東JOS平臺時的字段名,配合前邊的參數,不是調用上傳文件接口時為空字符串即可(參見后邊的實例)
返回為京東JOS平臺接口對應的JSON格式的字符串
JSON文本解析方法
public void parseJson(String json)
作用:解析京東JOS平臺接口返回的JSON格式的字符串,并根據內容生成N個對應的書包
參數:String json,京東JOS平臺接口返回的JSON格式的字符串
根據JSON文本的內容在系統中生成N個書包,根書包名稱為j0,下一層的josn文本內容生成的書包名稱用上一層的Key放在上一層的書名中,下邊用實例說明尋找對應書包的方法:
如店鋪信息查詢接口jingdong.vender.shop.query返回的json文本為
{
"jingdong_vender_shop_query_responce": {
"shop_jos_result": {
"open_time": "",
"shop_id": "",
"category_main_name": "",
"category_main": "",
"vender_id": "",
"brief": "",
"logo_url": "",
"shop_name": ""
}
}
}
找出店鋪信息書包名的方法如下
@{j0:jingdong_vender_shop_query_responce}
@{@{pPage:bag}:shop_jos_result}
這時候的@{pPage:bag}即為需要的店鋪信息書包名
具體用法請閱讀下載包中的《京東賣家如何快速開發網店工具軟件》

代碼片段和文件信息
package?htok.apps;
import?htok.Path;
import?htok.tools.*;
import?htok.we.html.*;
import?htok.we.*;
import?javax.servlet.http.*;
import?javax.servlet.*;
import?java.net.*;
import?java.security.*;
import?java.security.cert.*;
import?javax.crypto.*;
import?javax.crypto.spec.*;
import?java.io.*;
import?java.util.*;
import?javax.net.ssl.*;
import?com.alibaba.fastjson.*;
public?class?linkJOS?extends?linkOAuth2
{
//構造對象
public?linkJOS(HttpServletRequest?requestHttpServletResponse?response)
{
super(requestresponse);
}
private?String?cookie?=?““;
private?String?user_agent=“Mozilla/4.0?(compatible;?MSIE?6.0;?Windows?NT?5.2;?SV1;?.NET?CLR?1.1.4322)“;
public?String?link2(String?linkString?methodBag?sysBag?appsString?appSecretString?fileString?FileField)
{
//京東調用地址:https://api.jd.com/routerjson
int?protocol?=?0;
if(link.startsWith(“https“))protocol=1;
if(sys==null)?sys?=?new?Bag(-1);
if(apps==null)?apps?=?new?Bag(-1);
//參數和鏈接字符串
StringBuffer?qs?=?new?StringBuffer();
StringBuffer?ps?=?new?StringBuffer();
StringBuffer?sb;
if(apps.getWidth()>0)
{
sb?=?new?StringBuffer(“{“);
for(int?i=0;i {
String?name?=?apps.getKey(i);
if(i>0)?sb.append(““);
sb.append(“\““).append(name).append(“\“:\““).append(apps.get(name)).append(“\““);
/*if(method.equalsIgnoreCase(“POST“)?&&?file.equals(““))
{
if(ps.length()>0)?ps.append(“&“);
ps.append(encode(name)).append(“=“).append(encode(apps.get(name)));
}*/
}
sb.append(“}“);
sys.set(“__360buy_param_json“sb.toString());
if(method.equalsIgnoreCase(“POST“))
ps.append(sb);
}
sb?=?new?StringBuffer(appSecret);
for(int?i=0;i {
String?name?=?sys.getKey(i);
String?_name?=?name;
if(name.startsWith(“__“))?_name?=?name.substring(2);
sb.append(_name).append(sys.get(name));
if(method.equalsIgnoreCase(“POST“)?&&?“__360buy_param_json“.equals(name))
continue;
if(qs.length()>0)?qs.append(“&“);
//if(“__360buy_param_json“.equals(name))
// qs.append(_name).append(“=“).append(sys.get(name));
//else
qs.append(encode(_name)).append(“=“).append(encode(sys.get(name)));
}
String?sign?=?sign(sb.append(appSecret).toString());
qs.append(“&sign=“).append(sign.toUpperCase());
sb?=?new?StringBuffer(link).append(“?“).append(qs);
link?=?sb.toString();
try{//訪問
InputStream?input?=?null;
if(protocol==0)
{
URL?url?=?new?URL(link);
HttpURLConnection?connection?=?(HttpURLConnection)url.openConnection();
connection.setConnectTimeout(5000);
connection.setReadTimeout(5000);
connection.setUseCaches(false);
connection.setRequestProperty(“Charsert“?“UTF-8“);
if(method.equals(“POST“)?||?!file.equals(““))
{
connection.setRequestMethod(“POST“);
connection.setRequestProperty(“Connection“?“Keep-Alive“);
connection.setRequestProperty(“Content-Type“
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.C.D...?????????0??2015-11-20?18:01??jos
????.C.D...?????????0??2015-11-20?17:17??jos\ba
????.C.D...?????????0??2015-11-20?17:17??jos\ba
????.CA....??????3913??2009-03-25?09:34??jos\ba
????.CA....???????172??2008-10-17?09:59??jos\ba
????.CA....??????2748??2007-08-03?18:18??jos\ba
????.CA....??????1029??2009-03-25?09:36??jos\ba
????.CA....???????999??2009-03-25?09:34??jos\ba
????.CA....???????872??2008-10-17?08:57??jos\ba
????.CA....??????1651??2007-08-03?18:18??jos\ba
????.C.D...?????????0??2015-11-20?17:17??jos\ba
????.CA....??????3814??2008-10-19?18:23??jos\ba
????.CA....??????4061??2008-11-04?11:42??jos\ba
????.CA....??????5144??2008-10-22?09:45??jos\ba
????.CA....??????4665??2008-10-19?18:23??jos\ba
????.CA....???????613??2008-10-22?09:30??jos\ba
????.CA....??????3817??2008-10-19?18:23??jos\ba
????.CA....??????3882??2008-10-19?18:23??jos\ba
????.CA....??????6100??2008-09-27?21:09??jos\ba
????.CA....??????4681??2008-12-27?11:58??jos\ba
????.CA....??????4270??2009-02-25?17:41??jos\ba
????.CA....??????3847??2009-03-20?17:11??jos\ba
????.CA....???????532??2008-07-01?23:31??jos\ba
????.CA....????307200??2015-05-01?01:03??jos\ba
????.C.D...?????????0??2015-11-20?17:17??jos\ba
????.CA....??????4929??2005-03-20?20:16??jos\ba
????.CA....???????480??2009-08-21?15:00??jos\ba
????.CA....??????1687??2005-03-23?22:22??jos\ba
????.CA....???????799??2008-07-14?23:03??jos\ba
????.CA....???????665??2010-08-19?18:12??jos\ba
............此處省略947個文件信息
評論
共有 條評論