Http Post 二进制通信
客户端请求和接收(使用了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);
}
}
protected void sendResponse(String contextString, Channel channel){
HttpResponse response = new DefaultHttpResponse(HTTP_1_1, HttpResponseStatus.OK);
ChannelBuffer channelBuffer = ChannelBuffers.dynamicBuffer();
channelBuffer.writeInt(1);
channelBuffer.writeInt(2);
response.setContent(channelBuffer);
response.setHeader(CONTENT_TYPE, "text/plain; charset=UTF-8"); //application/octet-stream 也可以
channel.write(response).addListener(ChannelFutureListener.CLOSE);
}
Http Post 二进制通信的更多相关文章
- 轻量级通信引擎StriveEngine —— C/S通信demo(2) —— 使用二进制协议 (附源码)
在网络上,交互的双方基于TCP或UDP进行通信,通信协议的格式通常分为两类:文本消息.二进制消息. 文本协议相对简单,通常使用一个特殊的标记符作为一个消息的结束. 二进制协议,通常是由消息头(Head ...
- C#轻量级通通讯组件StriveEngine —— C/S通信开源demo(2) —— 使用二进制协议 (附源码)
前段时间,有几个研究ESFramework通信框架的朋友对我说,ESFramework有点庞大,对于他们目前的项目来说有点“杀鸡用牛刀”的意思,因为他们的项目不需要文件传送.不需要P2P.不存在好友关 ...
- ES6 二进制数组
二进制数组(ArrayBuffer对象.TypedArray视图和DataView视图)是JavaScript操作二进制数据的一个接口.这些对象早就存在,属于独立的规格(2011年2月发布),ES6将 ...
- web客户端与服务器端二进制传输
demo:https://pan.baidu.com/s/1gfEiJ1D 前端采用js,后端采用.net 主要实现js和服务器端之间用二进制通信
- es6二进制数组--基础
一.概念二进制数组由 ArrayBuffer对象 TypeArray 视图和DataView视图 三部分组成是javascript操作二进制数据的一个接口. 早在2011年2月就已经发布,但是由于ES ...
- REST 架构风格
目前基于网络应用的架构风格主要有三种: RPC架构风格 将服务器看作是由一些过程组成,客户端调用这些过程来执行特定的任务.SOAP就是RPC风格的一种架构.过程是动词性的(做某件事),因此RPC建 ...
- 实现快速迭代的引擎设计 - Capcom RE Engine的架构与实现
[译]实现快速迭代的引擎设计 - Capcom RE Engine的架构与实现 ken hu· 6 天前 原文(日文):ラピッドイテレーションを実現するゲームエンジンの設計 CEDEC2016上的一个 ...
- WebService的原理和过程
转自:http://blog.csdn.net/xiaoqiang081387/article/details/5694304 (一).XML WebService作用 XML WebService ...
- REST总结(转)
REST总结 REST(Representational State Transfer)是代表状态传输的缩写,它代表了分布式超媒体系统的体系结构风格,它是一种针对网络应用的设计和开 ...
随机推荐
- JavaWeb应用项目部署到云ubuntu
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6383068.html 在前面的博文中,我们已经在云主机ubuntu上搭建好jdk.tomcat以及mysql了 ...
- Java 实现的SnowFlake生成UUID (Java代码实战-007)
SnowFlake所生成的ID一共分成四部分: 1.第一位占用1bit,其值始终是0,没有实际作用. 2.时间戳占用41bit,精确到毫秒,总共可以容纳约69 年的时间. 3.工作机器id占用10bi ...
- 〖Linux〗干掉Kubuntu烦人的软件升级提示“Update notification daemon”,Your should update ..
Kubuntu是很好使用,但是升级提示也是太烦人了,开机的时候总是显示如下画面: 使用System Load Indicator(sudo apt-get install indicator-mult ...
- python模块之lib2to3(py2转py3自动化工具)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之lib2to3(py2转py3自动化工具) #http://tieba.baidu.com ...
- PHP5.4 需要添加的configure参数
./configure --prefix=/usr/local/php --with-gd=/usr/local/gd --with-jpeg-dir=/usr/local/jpeg --with-p ...
- 自制小工具含源码——SPTC上海交通卡余额查询
说明 需求 开发 其他
- Git提交代码报错Git push error:src refspec XXX matches more than one解决方案
Git提交代码push时,报错这个 error: src refspec master matches more than one. error: failed to push some refs t ...
- js精确计算(js浮点数精度问题)
转自:http://talentluke.iteye.com/blog/1767138 大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS里似乎特别严重,来看一个例子 alert(45.6*13 ...
- ReactiveCocoa 5.0 初次了解
RAC 5.0 相比于 4.0 有了巨大的变化,不仅是受 swift 3.0 大升级的影响,RAC 对自身项目结构的也进行了大幅度的调整.这个调整就是将 RAC 拆分为四个库:ReactiveCoco ...
- java结合使用Jsonp的例子
更多:js跨域问题解释 解决方案值使用jsonp或jQuery Jsonp和java操作例子 介绍JSONP之前,先简单的介绍一些JSON.JSON是JavaScript Object Notatio ...