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)是代表状态传输的缩写,它代表了分布式超媒体系统的体系结构风格,它是一种针对网络应用的设计和开 ...
随机推荐
- ODI调用WebService---->OdiInvokeWebService
ODI 提供了OdiInvokeWebService调用第三方WebService,可以在package和过程中使用. 一.准备测试用WebService 天气预报Web服务,数据来源于中国气象局公用 ...
- 使用Oracle Data Integrator Studio创建资料档案库
一.Creating the Database Schema /*第1步:创建临时表空间 */ create temporary tablespace user_temp tempfile 'C:\a ...
- Xcode7安装CocoaPods
一.CocoaPods介绍以及优点 CocoaPods 是开发 OS X 和 iOS 应用程序的一个第三方库的依赖管理工具.该项目源代码在Github上管理. 通过 CocoaPods,能够非常方便的 ...
- python之模块chunk,了解即可
# -*- coding: utf-8 -*-#python 27#xiaodeng#python之模块chunk# chunk模块专用于读取TIFF格式的文件,打开应当使用二进制模式 #TIFF:标 ...
- js获取height和width总结
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- iOS 播放远程网络音乐的核心技术点
一.前言 这两天做了个小项目涉及到了远程音乐播放,因为第一次做这种音乐项目,边查资料边做,其中涉及到主要技术点有: 如何播放远程网络音乐 如何切换当前正在播放中的音乐资源 如何监听音乐播放的各种状态( ...
- memcached全面剖析--3.memcached的删除机制和发展方向
下面是<memcached全面剖析>的第三部分. 发表日:2008/7/16 作者:前坂徹(Toru Maesaka) 原文链接:http://gihyo.jp/dev/feature/0 ...
- linux命令大全之watch命令详解(监测命令运行结果)
watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行.在Linux下,watch是周期性的执行下个 ...
- 腾讯大讲堂 微信红包系统设计 & 优化
http://djt.qq.com/article/view/1349 编者按:经过2014年一年的酝酿,2015微信红包总量创下历史新高,峰值1400万次/秒,8.1亿次每分钟,微信红包收发达10. ...
- ubuntu远程桌面连接windows系统
现在用ubuntu系统,公司买了个windows的服务器,需要给配置一套环境,来回跑很麻烦,就想windows下可以的远程桌面,Linux应该也有. 现在自己的ubuntu13.10,无法进入桌面的“ ...