创建如下两个类,并运行,即完成了调用接口(taobao.user.get)的过程
-
其中包括:
- 参数加密
- 请求接口调用服务
- 调用返回结果
- 注:该接口是在沙箱环境下调用,获取的数据,也是沙箱中数据。若要获取线上环境,请填写自己创建应用获取过来的appkey,appsecret,并更改调用接口的环境地址,同时修改nick为淘宝登陆名
数据获取
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class APITest {
protected static String testUrl = "http://gw.api.tbsandbox.com/router/rest";//沙箱环境调用地址
protected static String appkey = "test";
protected static String secret = "test";
public static String testUserGet(){
TreeMap<String, String> apiparamsMap = new TreeMap<String, String>();
apiparamsMap.put("format", "xml");
apiparamsMap.put("method", "taobao.user.get");
apiparamsMap.put("sign_method","md5");
apiparamsMap.put("app_key",appkey);
apiparamsMap.put("v", "2.0");
//apiparamsMap.put("session",request.getParameter("session"));他用型需要sessionkey
String timestamp =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
apiparamsMap.put("timestamp",timestamp);
apiparamsMap.put("fields","user_id,uid,nick");//需要获取的字段
apiparamsMap.put("nick","andyy_tan");
//生成签名
String sign = Util.md5Signature(apiparamsMap,secret);
apiparamsMap.put("sign", sign);
StringBuilder param = new StringBuilder();
for (Iterator<Map.Entry<String, String>> it = apiparamsMap.entrySet()
.iterator(); it.hasNext();) {
Map.Entry<String, String> e = it.next();
param.append("&").append(e.getKey()).append("=").append(e.getValue());
}
return param.toString().substring(1);
}
public static void main(String[] args) {
String result = Util.getResult(testUrl,testUserGet());
System.out.print(result);
}
}
Util类
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.security.MessageDigest;
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
public class Util {
/**
* 新的md5签名,首尾放secret。
* @param secret 分配给您的APP_SECRET
*/
public static String md5Signature(TreeMap<String, String> params, String secret) {
String result = null;
StringBuffer orgin = getBeforeSign(params, new StringBuffer(secret));
if (orgin == null)
return result;
orgin.append(secret);
try {
MessageDigest md = MessageDigest.getInstance("MD5");
result = byte2hex(md.digest(orgin.toString().getBytes("utf-8")));
} catch (Exception e) {
throw new java.lang.RuntimeException("sign error !");
}
return result;
}
/**
* 二行制转字符串
*/
private static String byte2hex(byte[] b) {
StringBuffer hs = new StringBuffer();
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1)
hs.append("0").append(stmp);
else
hs.append(stmp);
}
return hs.toString().toUpperCase();
}
/**
* 添加参数的封装方法
*/
private static StringBuffer getBeforeSign(TreeMap<String, String> params, StringBuffer orgin) {
if (params == null)
return null;
Map<String, String> treeMap = new TreeMap<String, String>();
treeMap.putAll(params);
Iterator<String> iter = treeMap.keySet().iterator();
while (iter.hasNext()) {
String name = (String) iter.next();
orgin.append(name).append(params.get(name));
}
return orgin;
}
/**连接到TOP服务器并获取数据*/
public static String getResult(String urlStr, String content) {
URL url = null;
HttpURLConnection connection = null;
try {
url = new URL(urlStr);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestMethod("POST");
connection.setUseCaches(false);
connection.connect();
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
out.write(content.getBytes("utf-8"));
out.flush();
out.close();
BufferedReader reader =
new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
reader.close();
return buffer.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
}
return null;
}
}
注:代码转自淘宝开放平台开发文档