104

         创建如下两个类,并运行,即完成了调用接口(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; 
         } 
} 
  注:代码转自淘宝开放平台开发文档

猜你喜欢

转载自poterban.iteye.com/blog/1147439
104