java HTTP代码示例

//测试环境发送用例

@Test

public void testSendForTest() {

    String url = "http://172.16.30.108:8138/api/doDeliver";

    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);    

}

数据到

原文地址:https://www.cnblogs.com/chengjun/p/9290928.html

时间: 2024-10-10 09:17:12

java HTTP代码示例的相关文章

Kafka JAVA客户端代码示例--高级应用

什么时间使用高级应用? 针对一个消息读取多次 在一个process中,仅仅处理一个topic中的一组partitions 使用事务,确保每个消息只被处理一次 使用高级应用(调用较底层函数)的缺点? SimpleConsumer需要做很多额外的工作(在以groups方式进行消息处理时不需要) 在应用程序中跟踪上次消息处理的offset 确定一个topic partition的lead broker 手工处理broker leander的改变 使用底层函数(SimpleConsumer)开发的步骤

Java多线程代码示例

package algorithm; class Mythread extends Thread{ String name; public Mythread(String name){ this.name=name; } public void run(){ System.out.println(name+":step1"); System.out.println(name+":step2"); System.out.println(name+":step

jxl创建Excel文件java代码示例

记得要下载 并 导入 jxl.jar 包,免积分下载地址:http://download.csdn.net/detail/u010011052/7561041 package Test; import java.io.*; import jxl.*; import jxl.format.Colour; import jxl.write.*; public class JXLTest { private static WritableWorkbook book; private static Wr

java 翻盖hashCode()深入探讨 代码示例

package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要的因素 就是:无论何时,对同一个对象调用HashCode都应该产生同样的值, * 如果你的HashCode方法依赖于对象中易变的数据,用户就要当心了,因为此数据发生变化 时 * HashCode就会生成一个不同的散列码,相当于产生一个不同的健 * 此外 也不应该使HashCode依赖于具有唯一性的对象信息,尤其是使用this的值,这只能很糟糕, * 因为这

Android Java使用JavaMail API发送和接收邮件的代码示例

JavaMail是Oracle甲骨文开发的Java邮件类API,支持多种邮件协议,这里我们就来看一下Java使用JavaMail API发送和接收邮件的代码示例 使用Javamail发送邮件,必需的jar包(请下载javamail的源文件,官方下载页:http://www.oracle.com/technetwork/java/javamail/index-138643.html):mailapi.jar.定义了收发邮件所使用到的接口API:smtp.jar.包含了发送邮件使用到的类:pop3.

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

本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等.虽然他们的功能非常强大,但在使用上还是有点不那么习惯.对于格式比较固定的XML文档,它的结构没有变化或是很少变化,这时将它转换成我们熟悉的Java对象来操作的话,会使工作变得更容易一些,而xstream正好可以满足这一点.    本文所用xstream的版本为:1.4.7 <dependency>

java 输入和输出 代码示例

此处省略介绍, package org.rui.io.inout; import java.io.BufferedReader; import java.io.FileReader; /** * 缓冲输入文件 * @author lenovo * */ public class BufferedInputFile { public static String read(String filename) throws Exception { BufferedReader br=new Buffer

spring框架整合使用定时任务框架java quartz的示例代码配置

原创整理不易,转载请注明出处:spring框架整合使用定时任务框架java quartz的示例代码配置 代码下载地址:http://www.zuidaima.com/share/1775583461723136.htm 有时候我们的任务(Job)需要再某些任务完成之后才能进行:例如从旧的数据库批量导数据的时候:需要现将被其他数据依赖的数据导入新的数据库:然后再进行关系的导入..在这种情况下我们就可以使用Quartz的listener来做文章了. 首先我们写一个主任务的类,命名为MainJob:她

JAVA NIO工作原理及代码示例

简介:本文主要介绍了JAVA NIO中的Buffer, Channel, Selector的工作原理以及使用它们的若干注意事项,最后是利用它们实现服务器和客户端通信的代码实例. 欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. ByteBuffer 1.1直接缓冲区和非直接缓冲区 下面是创建ByteBuffer对象的几种方式 static ByteBuffer allocate(int capacity) static Byte