//测试环境发送用例
@Test
public void testSendForTest() {
    String appkey = "00d40313b7f340ec8df6a3dff293d45c";
    String token = "871c69137b654c07b18191859d8bd257b9e092ac1f704336999a2a184a7d9910";
     
    Map<String, String> params = new LinkedHashMap<>();
    params.put("appkey", appkey);
    params.put("p0", "PDS");//业务系统
    params.put("p1", "PDS-test");//业务类型
    params.put("p2", UUID.randomUUID().toString());//业务id
    params.put("p3", "STATION_EUAE,STATION_SZAE");//目的站
    params.put("p4", "我是测试");//消息内容
    params.put("p5", "test");//跟踪ID
    params.put("p9", "123");//消息内容加密密钥
    String timestamp = System.currentTimeMillis()+"";
    params.put("timestamp", timestamp);//时间戳
     
    StringBuilder s = new StringBuilder();
    for (Iterator<Entry<String, String>> iterator = params.entrySet().iterator(); iterator.hasNext();) {
        Entry<String, String> entry = iterator.next();
        if(StringUtils.isNotBlank(entry.getValue())) {
            s.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
        }
    }
     
    String paramsStr = s.toString();
    String signStr = CodecUtil.md5AndBase64(paramsStr.substring(0, paramsStr.length() - 1) + token);
    params.put("signStr", signStr);
     
    String response = HttpUtils.postJson(url, params);
    System.out.println(response);
    ResponseMessage responseMessage = JSON.parseObject(response, ResponseMessage.class);
    System.out.println(responseMessage);
}
//签名代码
public static String md5AndBase64(String stringValue) {
    try {
        byte[] btInput = stringValue.getBytes(Charset.forName("UTF-8"));
        // 获得MD5摘要算法的 MessageDigest 对象
        MessageDigest mdInst = MessageDigest.getInstance("MD5");
        // 使用指定的字节更新摘要
        mdInst.update(btInput);
        // 获得密文
        byte[] md = mdInst.digest();
        return Base64.encodeBase64String(md);
    } catch (Exception e) {
        logger.error(e.getMessage(), e);
        throw new IllegalArgumentException(e.getMessage());
    }
}
//报文示例
POST http://172.16.30.108:8138/api/doDeliver
POST data:
{
    "appkey":"00d40313b7f340ec8df6a3dff293d45c",
    "p0":"PDS",
    "p1":"PDS-test",
    "p2":"d84321b2-49a4-4d0e-8783-4fc400df4760",
    "p3":"STATION_EUAE,STATION_SZAE",
    "p4":"我是测试",
    "p5":"test",
    "p9":"123",
    "timestamp":"1528877765741",
    "signStr":"L4c8LWrbHe1U7CIBA/AWfg=="
}
[no cookies]
Request Headers:
Connection: close
content-type: application/json
Content-Length: 290
Host: 172.16.30.108:8138
User-Agent: Apache-HttpClient/4.5.5 (Java/1.8.0_151)

使用说明:

  • 客户端jar包引入

<dependency>  
    <groupId>com.fpx.sync</groupId>
    <artifactId>fpx-sync-client</artifactId>  
    <version>1.1.1-SNAPSHOT</version>
</dependency>
  • 引入客户端配置文件或自行添加配置项

引入配置文件注入客户端配置数据
<import resource="classpath*:spring-sync-client.xml" />
或者自行添加配置项注入
<bean class="com.fpx.sync.client.deliver.util.ConfigUtils">  
  <!-- 传送站同步地址 -->  
  <property name="stationSyncHost" value="172.16.30.108"></property>  
  <!-- 传送站同步端口 -->  
  <property name="stationSyncPort" value="33306"></property>  
  <!-- 传送站同步文件路径 -->  
  <property name="stationSyncFileBasePath" value="/mnt/sync"></property>  
  <!-- 传送服务登录秘钥 -->  
  <property name="stationDeliverServerLoginPwd" value="B6C3BCCE61DE2A68BE1BF58C5DFDEC9D"></property>  
  <!-- 压缩包的文件扩展名 -->  
  <property name="compressExtention" value="war,apk,rar,zip,tar,iso,gzip,7z,tar.gz"></property> 
</bean>
  • 配置properties中添加配置项

#客户端连接地址
CLIENT_STATION_SYNC_HOST=127.0.0.1
#客户端连接端口
CLIENT_STATION_SYNC_PORT=33301
#传送站文件存储路径
CLIENT_STATION_SYNC_FILE_BASE_PATH=/mnt/sync/
#传送站程序交互登录秘钥
CLIENT_STATION_DELIVER_SERVER_LOGIN_PWD=B6C3BCCE61DE2A68BE1BF58C5DFDEC9D
#压缩文件类型
COMPRESS_EXTENTION=war,apk,rar,zip,tar,iso,gzip,7z,tar.gz
  • 客户端使用示例代码

/**     
 * 测试从深圳中心 发往 美西仓仓库     
 * 业务类型需要定义     
 * 业务Id不能重复     
 *      
 * @throws IOException     
 */    
 
@Test    
public void testAreaToWarehouse() throws IOException{        
  long start = System.currentTimeMillis();                 
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-ddHHmmSS");        
  String now = sdf.format(new Date());        
  String businessSystem = "GRS";
    String trackId = "TR0001";
    String bizType = "test-delivery-" + now;        
  String bizId = now;        
  String message = UUID.randomUUID().toString();        
  SyncResult result = DeliverApi.deliverMessage(businessSystem, trackId, bizType, bizId, "STATION_SZAE", "STATION_USLAXA", message); 
    //发送文件
   //String filePath = "D:/1.text";
   //SyncResult result = DeliverApi.deliverMessage(businessSystem, trackId, bizType, bizId, "STATION_SZAE", "STATION_USLAXA", message, filePath);         
    System.out.println(result.getResult());        
  long end = System.currentTimeMillis();        
  System.out.println("耗时 " + (end - start) / 1000 + " 秒");        
  System.out.println(result.toString());                 
  System.exit(0);    
}

数据到

java HTTP代码示例的更多相关文章

  1. java集合代码示例

    一.List ArrayList 使用List时,最好初始化容量. ArrayList的默认容量为10,每次扩容增0.5倍,假如要放置100个元素,需要多次扩容. List<String> ...

  2. Java多态——代码示例

    刚开始看多态的文字定义时,总是不明白说的啥意思,看了一些示例代码后,总算知道了,其实也就是“多态”的字面意思. 如下: class A{ public void Out() { System.out. ...

  3. Java多线程代码示例

    package algorithm; class Mythread extends Thread{ String name; public Mythread(String name){ this.na ...

  4. Java基础知识强化之IO流笔记72:NIO之 NIO核心组件(NIO使用代码示例)

    1.Java NIO 由以下几个核心部分组成: Channels(通道) Buffers(缓冲区) Selectors(选择器) 虽然Java NIO 中除此之外还有很多类和组件,Channel,Bu ...

  5. 使用XStream注解实现Java对象与XML互相转换的代码示例

    本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...

  6. JAVA NIO工作原理及代码示例

    简介:本文主要介绍了JAVA NIO中的Buffer, Channel, Selector的工作原理以及使用它们的若干注意事项,最后是利用它们实现服务器和客户端通信的代码实例. 欢迎探讨,如有错误敬请 ...

  7. 【Java基础】2、Java中普通代码块,构造代码块,静态代码块区别及代码示例

    Java中普通代码块,构造代码块,静态代码块区别及代码示例.Java中普通代码块,构造代码块,静态代码块区别及代码示例 执行顺序:静态代码块>静态方法(main方法)>构造代码块>构 ...

  8. [置顶] think in java interview-高级开发人员面试宝典代码示例

    下载资源地址为: http://download.csdn.net/detail/lifetragedy/6379755 这是think in java interview中的代码示例,包括JAVA基 ...

  9. MapReduce序列化及分区的java代码示例

    概述 序列化(Serialization)是指把结构化对象转化为字节流. 反序列化(Deserialization)是序列化的逆过程.把字节流转为结构化对象. 当要在进程间传递对象或持久化对象的时候, ...

随机推荐

  1. django之页面缓存

    一  全站缓存(全局缓存) 在settings中配置,主要就是两个中间件,需要注意的就是两个中间件的前后位置 MIDDLEWARE_CLASSES = ( ‘django.middleware.cac ...

  2. SonarQube+jenkins+maven平台搭建

    SonarQube代码质量管理 1.配置jdk和maven jenkins - 系统管理 - 全局工具配置 jdk安装: # which java# /usr/local/java/jdk1.8.0. ...

  3. 理解java动态代理

    java动态代理是java语言的一项高级特性.在平时的项目开发中,可能很难遇到动态代理的案例.但是动态代理在很多框架中起着不可替代的作用,例如Spring的AOP.今天我们就聊一聊java动态代理的实 ...

  4. python爬虫中文乱码解决方法

    python爬虫中文乱码 前几天用python来爬取全国行政区划编码的时候,遇到了中文乱码的问题,折腾了一会儿,才解决.现特记录一下,方便以后查看. 我是用python的requests和bs4库来实 ...

  5. Vim step by step

    @1: VIM中非常迷人的功能: D------->从当前位置开始删除,直到当前行结束 cw------->修改游标所在的单词,修改范围从游标位置到单词结尾. 一个替换一个用r,一个替换多 ...

  6. java static成员变量方法和非static成员变量方法的区别 ( 二 )

    原创文章,未经作者允许,禁止转载!!! 静态成员变量不用new对象,在类加载的过程中就已经初始化存放在数据区域,静态成员变量是类和所有对象共有的,类和对象都可以改变它的值,每一次改变值之后,静态成员变 ...

  7. php写守护进程(转载 http://blog.csdn.net/tengzhaorong/article/details/9764655)

    守护进程(Daemon)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.守护进程是一种很有用的进程.php也可以实现守护进程的功能. 1.基本概念 进程 ...

  8. NGUI制作 《九宫格》 图片

    什么是九宫格图片? 就是一张图片的上下左右四个角是固定的,无论X/Y被拉伸多大,图片都不会失真 效果图 ------> 那在NGUI里面怎么做到呢 1 首先你要把图片添加到NGUI图集里,点击E ...

  9. java获取时间戳

    package com.ycy.test; import java.text.SimpleDateFormat; import java.util.Date; public class ItemsCo ...

  10. 20145316《Java程序设计》第9周学习总结

    20145316<Java程序设计>第9周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Ja ...