java对接申通下单接口示例代码
上面是控制台示例代码
public class Sample{
private final static String URL = "http://order.sto-express.cn:8001/api/Order/ProcessRequestTest";
private final static String APPKEY = "appkey";
private final static String APPSECRET = "secret";
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Date date = new Date();
String dateStr = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss");
Map<String, String> paramMap = new HashMap<String, String>();
paramMap.put("RequestType", "json");
paramMap.put("Func", "sto.order.add");
JSONObject contentObj = new JSONObject();
contentObj.put("SenderName", "张三");
contentObj.put("SenderPhone", "15111111111");
contentObj.put("SenderMobile", "15111111111");
contentObj.put("SenderProvince", "上海");
contentObj.put("SenderCity", "上海市");
contentObj.put("SenderDistrict", "青浦区");
contentObj.put("SenderAddress", "青浦区");
contentObj.put("ReceiverName", "李四");
contentObj.put("ReceiverMobile", "15111111112");
contentObj.put("ReceiverProvince", "上海");
contentObj.put("ReceiverCity", "上海市");
contentObj.put("ReceiverDistrict", "青浦区");
contentObj.put("ReceiverAddress", "青浦区");
contentObj.put("GoodsType", "物品");
String contentStr =Base64.encodeBase64String(contentObj.toString().getBytes()).replaceAll("\r\n", "");
System.out.println("contentStr:" + contentStr);
System.out.println("Decode:" + new String(Base64.decodeBase64(contentStr)));
paramMap.put("Content", contentStr);
paramMap.put("AppKey", APPKEY);
paramMap.put("TimeSpan", dateStr);
paramMap.put("Signature", DigestUtils.md5Hex(APPKEY+ dateStr + contentStr + APPSECRET));
paramMap.put("Version", "1.0");
System.out.println(JSONObject.fromObject(paramMap));
StringRequestEntity entity = null;
try {
entity = new StringRequestEntity(JSONObject.fromObject(paramMap).toString(), "application/json", "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
Map<String, String> headerMap = new HashMap<String, String>();
headerMap.put("Connection", "Keep-Alive");
headerMap.put("Cache-Control", "no-cache");
headerMap.put("Accept", "text/html,application/xhtml+xml,application/xml,application/json;");
String responseStr = HttpClientUtils.getResponseBodyAsStringByPost(URL, entity, headerMap);
System.out.println(responseStr);
}
}
下面的代码是post的代码
public static String getResponseBodyAsStringByPost(String url, RequestEntity requestEntity,int retryCount, Map<String, String> headerMap){
StringBuffer buffer = new StringBuffer(url);
PostMethod method = new PostMethod(buffer.toString());
if(headerMap!=null){
for(Entry<String, String> entry:headerMap.entrySet()){
method.addRequestHeader(entry.getKey(), entry.getValue());
}
}
if(requestEntity!=null){
method.setRequestEntity(requestEntity);
}
do{
try {
try {
int code = getHttpClient().executeMethod(method);
if (code == HttpStatus.SC_OK) {
return method.getResponseBodyAsString();
} else {
LOGGER.warn("http failed, code {}, response {}, url {}", code, method.getResponseBodyAsString(), url);
}
} finally {
method.releaseConnection();
}
} catch (Throwable e) {
LOGGER.warn("http error, url:"+ url, e);
}
}while(--retryCount>0);
return null;
}
------------------------------------------------------------------------------
public static String getResponseBodyAsStringByPost(String url, RequestEntity requestEntity, Map<String, String> headerMap){
return getResponseBodyAsStringByPost(url,requestEntity,1, headerMap);
}
这个也需要加上。否则参数不匹配。
这个是和小米公司对接,工程师最后主动提供给我的,这才叫思考到位。
java对接申通下单接口示例代码的更多相关文章
- wechat开发笔记之1.接口示例代码
修改后的php示例代码! <?php /** * wechat php test */ //define your token define("TOKEN", "w ...
- EasyNVR网页Chrome无插件播放摄像机视频功能二次开发之云台控制接口示例代码
随着多媒体技术和网络通信技术的迅速发展,视频监控技术在电力系统.电信行业.工业监控.工地.城市交通.水利系统.社区安防等领域得到越来越广泛的应用.摄像头直播视频监控通过网络直接连接,可达到的世界任何角 ...
- Java 利用 UUID 生成唯一性 ID 示例代码
用户ID首先生成,订单ID的生成可依赖用户ID. 下面代码前六位是日期,后八位是随机数,用于生成用户ID. public String getNewUserId() { String ipAddres ...
- Java 超类引用子类对象的示例代码
动态方法分配 dynamic method dispatch 一个被重写的方法的调用会在运行时解析,而不是编译时解析 Java 会根据在调用发生时引用的对象的类型来判断所要执行的方法 public c ...
- 0038 Java学习笔记-多线程-传统线程间通信、Condition、阻塞队列、《疯狂Java讲义 第三版》进程间通信示例代码存在的一个问题
调用同步锁的wait().notify().notifyAll()进行线程通信 看这个经典的存取款问题,要求两个线程存款,两个线程取款,账户里有余额的时候只能取款,没余额的时候只能存款,存取款金额相同 ...
- 左右JAVA示例代码事件分发和监督机制来实现-绝对原创有用
文章标题:左右JAVA示例代码事件分发和监督机制来实现 文章地址: http://blog.csdn.net/5iasp/article/details/37054171 作者: javaboy201 ...
- JAVA的免费天气api接口调用示例
step1:选择本文所示例的接口"免费天气api" url:https://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参 ...
- java接口对接——别人调用我们接口获取数据
java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...
- Java内部类超详细总结(含代码示例)
什么是内部类 什么是内部类? 顾名思义,就是将一个类的定义放在另一个类的内部. 概念很清楚,感觉很简单,其实关键在于这个内部类放置的位置,可以是一个类的作用域范围.一个方法的或是一个代码块的作用域范围 ...
随机推荐
- Java 延迟队列使用
延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到…… 应用场景比较多,比如延时1分钟发短 ...
- 基于Java的HashMap和HashSet实现
一.Map接口类: import java.util.Iterator; public interface IMap<K, V> { /* 清除所有键值对 */ void clear(); ...
- [Swift]LeetCode109. 有序链表转换二叉搜索树 | Convert Sorted List to Binary Search Tree
Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...
- [Swift]LeetCode871. 最低加油次数 | Minimum Number of Refueling Stops
A car travels from a starting position to a destination which is target miles east of the starting p ...
- dpkg: 处理软件包 xxx (--configure)时出错 解决办法
第一步:备份 $ sudo mv /var/lib/dpkg/info /var/lib/dpkg/info.bk 第二步:新建 $ sudo mkdir /var/lib/dpkg/info 第三步 ...
- VMware虚拟机安装Linux系统
许多新手连 Windows 的安装都不太熟悉,更别提 Linux 的安装了:即使安装成功了,也有可能破坏现有的 Windows 系统,比如导致硬盘数据丢失.Windows 无法开机等.所以一直以来,安 ...
- IntelliJ IDEA下SVN的配置及使用说明
1 下载及安装SVN客户端. 到官网下载小乌龟SVN客户端,官网地址:https://tortoisesvn.net/downloads.html,根据操作系统情况选择适合版本.比如64为操作系统,如 ...
- Linux查看系统、核数、CPU、位数
查看系统: cat /etc/os-release 结果为 centOS Linux 7 查看核数和CPU: lscpu 40 个核,处理器为 Intel(R) Xeon(R) CPU E7-8891 ...
- Django+Bootstrap+Mysql 搭建个人博客(五)
5.1.自定义403,404和500页面 (1)website/urls.py from blog import views as blog_views handler403 = blog_views ...
- 关于pycharm安装出现的interpreter field is empty,无法创建项目存储位置
关于pycharm安装出现的interpreter field is empty(解释器为空) 关于pycharm安装出现的interpreter field is empty,无法创建项目存储的位置 ...