Http Post 二进制通信

转载 2016年06月01日 16:50:26

客户端请求和接收(使用了httpclient4.3 和netty3.5)

public static void httpPost11() {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpPost httpPost = new HttpPost(
            "http://192.168.1.74:4321/v1/user/get_notice");
    MultipartEntityBuilder d=MultipartEntityBuilder.create();
    int a=10,b=11;
    d.addBinaryBody("id", HighLowByteConvert.toHH(a));
    d.addBinaryBody("ids", HighLowByteConvert.toHH(b));
    try {
        httpPost.setEntity(d.build());
        CloseableHttpResponse httppHttpResponse2 = httpClient
                .execute(httpPost);
        if (httppHttpResponse2.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
            byte []c=EntityUtils.toByteArray(httppHttpResponse2.getEntity());
            ChannelBuffer channelBuffer = ChannelBuffers.copiedBuffer(c);
            System.out.println(channelBuffer.readInt());
            System.out.println(channelBuffer.readInt());
        }
        else
        {
        }
        httppHttpResponse2.close();
        httpClient.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

}

服务端接收和发送

public void handle(HttpRequest request, Channel channel) throws Exception {
        
        HttpMethod method = request.getMethod();
        if(method.equals(HttpMethod.GET)){
            handle(request.getUri(), channel);
        }else if(method.equals(HttpMethod.POST)){
             HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(new DefaultHttpDataFactory(false), request);
             List< InterfaceHttpData> datas = decoder.getBodyHttpDatas();
             for (InterfaceHttpData interfaceHttpData : datas) {
                 if(interfaceHttpData.getHttpDataType() == HttpDataType.Attribute)
                 {
                     Attribute attribute = (Attribute) interfaceHttpData;
                     System.out.println("id :" +   attribute.getChannelBuffer().readInt());
                 }
            }
             sendResponse("", channel);
        }
    }



以二进制流的类型post发送文件

php:
  • iastro
  • iastro
  • 2016年07月06日 11:48
  • 4121

netty 二进制简单通信

环境: netty版本4.0.36Final jdk7 服务端: 1.App.javapackage com.mind.core; import com.mind.core.net.websoc...
  • LANGZI7758521
  • LANGZI7758521
  • 2016年05月25日 19:30
  • 2580

HttpClient Post 二进制/字节流/byte[]

HttpClient Post 二进制/字节流/byte[] 2016-06-03 11:28 6790人阅读 评论(0) 收藏 举报  分类: Java(11)  ...
  • p312011150
  • p312011150
  • 2017年09月22日 16:33
  • 167

从客户端,通过HttpClient发送二进制数据到服务器端

在实现第三方接口时,通过二进制数据通讯,可以更高效、更灵活、更稳定。 从客户端发起请求的代码如下所示。  protected static byte[] remoteInvok...
  • stationxp
  • stationxp
  • 2015年04月25日 12:43
  • 3763

HttpClient Post 二进制/字节流/byte[]

HttpClient 3.x HttpClient 4.x
  • Sidyhe
  • Sidyhe
  • 2016年06月03日 11:28
  • 9718

有关使用HTTP协议传输二进制文件

HTTP协议是基于字符(ASCII)的,当Content-Type项为text/xml,则内容是文本格式;当二进制格式时,Content-Type项为image/gif,就是了。例如,浏览器请求一张图...
  • liuxiao723846
  • liuxiao723846
  • 2015年07月21日 17:46
  • 5012

urllib post二进制数据

如果二进制数据比较小,可以先把二进制数据转换成base64编码,再传送,接收端接收后,再转换成二进制数据 这里例举一个base64和二进制数据之间转换的例子,urllib的示例不作介绍: impo...
  • bytxl
  • bytxl
  • 2014年03月29日 09:41
  • 849

AFNetworking3.0 POST 以二进制的形式传输数据

目前在一个项目中碰到的需求是直接传输二进制数据,并不是NSArry或者NSDictionay类型的数据。发现使用AFNetworking的POST方式传输是不行的,服务器端收到的数据都是乱码。而以iO...
  • dfman1978
  • dfman1978
  • 2017年09月21日 11:18
  • 216

HTTP传输二进制初探

从第一次接触http协议的时候,不知是怎么回事,形成了这么一个错误的观点,认为http协议是个纯ASCII字符协议,也就是说在http流里是看不到二进制流的0x00值的。其实答案是:http协议里的c...
  • maikforever
  • maikforever
  • 2011年12月12日 16:41
  • 1340

HTTP2.0性能增强的核心:二进制分帧

http://blog.csdn.net/sjhuangx/article/details/52299726 http://blog.csdn.net/sjhuangx/article/deta...
  • u011904605
  • u011904605
  • 2016年11月02日 21:28
  • 897
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Http Post 二进制通信
举报原因:
原因补充:

(最多只允许输入30个字)