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内部类超详细总结(含代码示例)
什么是内部类 什么是内部类? 顾名思义,就是将一个类的定义放在另一个类的内部. 概念很清楚,感觉很简单,其实关键在于这个内部类放置的位置,可以是一个类的作用域范围.一个方法的或是一个代码块的作用域范围 ...
随机推荐
- You need to use a Theme.AppCompat theme (or descendant) with this activity 问题解决
You need to use a Theme.AppCompat theme (or descendant) with this activity 问题解决 问题代码 void initCommit ...
- Oracle数据库备份及还原
Oracle数据库备份 1:找到Oracle安装路径我的就是默认C盘 C:\app\wdjqc\admin\orcl\adump 2:执行文件:back.bat 文件内容如下: @echo off ...
- [Java]LeetCode284. 顶端迭代器 | Peeking Iterator
Given an Iterator class interface with methods: next() and hasNext(), design and implement a Peeking ...
- [Swift]LeetCode567. 字符串的排列 | Permutation in String
Given two strings s1 and s2, write a function to return true if s2 contains the permutation of s1. I ...
- [Swift]LeetCode840. 矩阵中的幻方 | Magic Squares In Grid
A 3 x 3 magic square is a 3 x 3 grid filled with distinct numbers from 1 to 9 such that each row, co ...
- linux 部署mysql
参考:https://www.cnblogs.com/silentdoer/articles/7258232.html mysql中执行的语句需要在语句结尾使用分号 下载 MySql yum 包 w ...
- SCOI2019 退役记
退役了.D2没有翻盘,愉快出队,文化课见. 19年4月14日:某校第一届的最后一名OIer退出竞赛. 留坑. 万一退役失败了呢
- 解放双手—Cobbler批量自动化部署多版本系统
1 Cobbler 介绍 Cobbler 是一个 Linux 服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理 DHCP,DNS 等.Cobble ...
- CompletableFuture基本用法
异步计算 所谓异步调用其实就是实现一个可无需等待被调用函数的返回值而让操作继续运行的方法.在 Java 语言中,简单的讲就是另启一个线程来完成调用中的部分计算,使调用继续运行或返回,而不需要等待计算结 ...
- 使用mpvue开发小程序教程(二)
在上篇文章中,我们介绍了使用mpvue开发小程序所需要的一些开发环境的搭建,并创建了第一个mpvue小程序代码骨架并将其运行起来.在本文中,我们来研究熟悉一下mpvue项目的主要目录和文件结构. 在V ...