`
阅读更多

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

0
2
分享到:
| 104
评论

相关推荐

    南瑞IEC104修改过_iec104_南瑞_104_104规约_

    《深入解析南瑞104规约:基于IEC104协议的通信实现》 在电力自动化领域,IEC104规约是广泛应用的一种通信协议,它为电力系统设备间的远程通信提供了标准化的数据交换格式。南瑞,作为国内电力自动化行业的领军企业...

    IEC104master.rar_104_IEC_IEC104Master_iec 104 _iec104 c++源码

    《深入理解IEC 104协议:基于C++的实现》 IEC 104,全称为“International Electrotechnical Commission 60870-5-104”,是电力自动化领域广泛采用的一种通信协议,主要用于远程终端单元(RTU)、智能电子设备(IED...

    104规约报文解析(实例(适用初学者)).rar_104_104 示例报文_104协议_104规约报文_协议分析

    《104规约报文解析:初学者指南》 104协议,全称IEC 60870-5-104,是电力自动化领域广泛应用的一种通信协议,主要用于电力系统的SCADA(Supervisory Control And Data Acquisition)系统,实现远程终端单元(RTU)...

    Qtester104 IEC104调试工具

    《Qtester104:深入理解IEC104调试工具》 在电力通信领域,IEC60870-5-104协议扮演着至关重要的角色,它是国际电工委员会(IEC)制定的一种标准,用于电力系统自动化设备之间的数据交换。Qtester104就是针对这一协议...

    ProIEC104Client1-5版_iec101104_104_ProIEC104_

    《ProIEC104Client1-5版:电力远动测试与101/104协议详解》 在电力系统自动化领域,通信协议扮演着至关重要的角色,其中IEC 101和IEC 104是两种广泛采用的标准。本文将围绕"ProIEC104Client1-5版"这一测试软件,...

    IEC104Master IEC104NASlave.zip

    IEC104Master IEC104NASlave.zip AppWizard has created this IEC104NAMaster DLL for you. This file contains a summary of what you will find in each of the files that make up your IEC104NAMaster ...

    IEC104规约模拟器

    **IEC 104规约模拟器**是电力系统通信领域中的一种重要工具,主要用于模拟和测试基于IEC 60870-5-104标准的数据传输。这个标准,通常简称为IEC 104,是国际电工委员会制定的一种通讯协议,专门用于电力自动化系统中...

    许继104规约_许继104协议文档_

    许继104规约,全称为IEC 60870-5-104,是电力系统自动化领域广泛应用的一种通信协议。这个规约是基于TCP/IP网络的,目的是实现电力系统的远动设备(RTU)与主站之间的数据交换。许继104协议文档通常包含了关于如何...

    IEC 104 主站模拟工具、IEC 104 客户端工具

    IEC 104协议是国际电工委员会制定的一种通信协议,主要用于电力系统自动化设备之间的数据交换,如变电站与调度中心、智能电表与主站等。本话题将围绕"IEC 104 主站模拟工具"和"IEC 104 客户端工具"展开,介绍其开发...

    IEC104 Analyzer是IEC104协议的调试软件工具工程源代码

    **IEC104协议详解** IEC104,全称是International Electrotechnical Commission 60870-5-104,是一种国际标准通信协议,主要用于电力系统自动化中的数据交换。该协议定义了设备间的通信规程,包括报文结构、数据...

    ProIEC104Client亲测可用。仿真104主站,支持手动、自动输入报文。链接稳定

    《ProIEC104Client:一款可靠的104主站仿真工具》 在电力自动化领域,IEC 60870-5-104标准(简称104协议)是广泛应用的一种通信协议,主要用于电力系统变电站自动化设备之间的数据交换。本文将详细介绍ProIEC104...

    Kepserver-104主站配置对接流程

    Kepware公司的Kepserver是一款强大的OPC服务器软件,支持多种协议,包括104协议(也称为Modbus TCP)。本文将详细阐述如何配置Kepserver-104主站与104从站的对接流程。 首先,我们来看104从站的配置。104协议是一种...

    IEC104模拟器,亲测可用

    IEC104模拟器是一种专门用于测试和模拟IEC60870-5-104协议的工具,该协议是国际电工委员会(IEC)制定的一种用于电力系统自动化设备之间通信的标准。这个“IEC104模拟器,亲测可用”可能包含了两个不同的测试组件,...

    ZCU104 开发板原理图

    ZCU104 开发板原理图 ZCU104 开发板原理图是 Xilinx 官方提供的一份详细的设计文件,旨在帮助开发者快速了解 ZCU104 开发板的设计理念和实现方法。该文件包含了 ZCU104 开发板的详细设计信息,包括原理图、组件清单...

    IEC104模拟器(master & slave)

    IEC104模拟器是针对电力自动化领域通信标准IEC 60870-5-104的一种仿真工具,它可以帮助开发者和工程师在VS2015环境下进行测试和调试工作。IEC104协议是国际电工委员会(IEC)制定的用于电力系统SCADA(Supervisory ...

    AllProPro-模拟主站104调试必备

    《全面解析:模拟主站104调试技术与实践》 在工业自动化领域,通信协议是设备间数据交换的关键。104协议,全称IEC 60870-5-104,是一种广泛应用的电力系统远动通信协议,尤其在SCADA(Supervisory Control and Data...

    DL634.5104-2002(60870-5-104)_104_104规约_101104协议_60870_

    《DL634.5104-2002(60870-5-104)- 104规约与101104协议详解》 在电力自动化领域,通信规约是实现远程终端单元(RTU)与主站系统之间数据交换的关键技术。DL634.5104-2002是根据国际电工委员会(IEC)60870-5-104...

    IEC60870-5-104_IEC60870-5-104_电力104规约_

    电力104规约,全称为IEC60870-5-104,是国际电工委员会(IEC)制定的一种通信规约,主要用于电力系统自动化设备间的远动通信。这一规约是电力行业广泛应用的标准,尤其在调度中心与变电站之间的数据交换中起到关键...

    电网104规约协议调测工具、104协议调测工具、电网104规约调测工具、104长链接调测工具

    电网104规约,全称为“IEC60870-5-104”,是电力系统中广泛使用的通信规约,主要用于自动化设备之间的数据交换,如SCADA(Supervisory Control and Data Acquisition)系统。这个规约是国际电工委员会(IEC)制定的...

Global site tag (gtag.js) - Google Analytics