io流-客户端读取服务端回执信息时出现error:org.apache.http.ConnectionClosedException

问题描述

客户端读取服务端回执信息时出现error:org.apache.http.ConnectionClosedException

具体error: org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body 。 (好像是回执信息数据太大)
网上搜了下,大概意思就是 :
本来在接管数据量,程序员显式封闭了连接(同步调用),而netty是异步处理惩罚,当连接被显式封闭后,后来的数据再次触发读写操纵时贯穿连接已经不成用。所以呈现读不一完全数据的题目。

服务端关键代码:
InputStream is = t.getRequestBody();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));

StringBuffer temp=new StringBuffer();
String lineMessage;
while ((lineMessage = reader.readLine()) != null) {
temp.append(lineMessage);
}
reader.close();
is.close();
String respXml=DuXmlDoc.execute(temp.toString());
System.out.println("!!"+respXml);
t.sendResponseHeaders(2000, respXml.length());

OutputStream os = t.getResponseBody();

os.write(respXml.getBytes());

os.flush();
os.close();

t.close();
客户端关键代码:
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
StringBuffer returnMessage = new StringBuffer();
System.out.println(response.getStatusLine());
if (entity != null) {
System.out.println("Response content length: " + entity.getContentLength());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(entity.getContent()));
String lineMessage;
while ((lineMessage = bufferedReader.readLine()) != null) {
returnMessage.append(lineMessage);
}
bufferedReader.close();
}

时间: 2024-08-26 12:03:56

io流-客户端读取服务端回执信息时出现error:org.apache.http.ConnectionClosedException的相关文章

io流-socket 客户端读取服务端发送的 序列化流 报错

问题描述 socket 客户端读取服务端发送的 序列化流 报错 客户端 服务端 请大神指教,实在找不到原因了,对这块儿也不是很熟 解决方案 socket调用了一次getInputStream时,但又需要把这个socket的相关信息作为参数传递给别的对象时,应注意:不用直接把socket传过去,应该把对应的ObjectInputStream或ObjectOutputStream对象传递过去. 解决方案二: 直接读写Object,使用java自己的序列化不可以吗?

android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上

问题描述 android通过socket通信实现客户端读取服务端的二进制数据,并展示在textview控件上 客户端通过socket通信,完成读取服务端的二进制数据读取,并将数据显示在textview控件上,数据全为整型 解决方案 之前接触一些,但不是我我写的.JNI中C读取,生成Native方法.上层调用 解决方案二: 底层c来封装so文件调用socket API.上面Java调用so 解决方案三: ....java自己有socket啊,ls各位回答的什么意思.... 简单的socket网上教

客户端访问服务端时,通过ELB;ELB主动关闭第一次请求的源端口,导致后端反馈信息没法通信?

问题描述 客户端访问服务端时,通过ELB:ELB主动关闭第一次请求的源端口,导致后端反馈信息没法通信?

客户端获取服务端纯数据,我所知的有2种方案,1是javascript读取web service,2是专门用一个iframe来请求服务端页面从而获取数据 。请大家说下哪种速度最快,或者有没有更好的方案

问题描述 客户端获取服务端纯数据,我所知的有2种方案,1是javascript读取webservice,2是专门用一个iframe来请求服务端页面从而获取数据.请大家说下哪种速度最快,或者有没有更好的方案 解决方案 解决方案二:up解决方案三:客户端获取服务端纯数据ajax请求页面返回json格式也算纯数据的解决方案四:httprequest

C# Scoket通讯 客户端如何读取服务端发来的消息

问题描述 C#Scoket通讯客户端如何读取服务端发来的消息?请高手指点! 解决方案 解决方案二:你接收过来后,根据协议拆分分析就可以了.解决方案三: 解决方案四:Encoding.ASCII.GetString解决方案五:定义好发送协议,接受的时候注意分包,粘包的处理解决方案六:解析啊数据格式解决方案七:客户端有两种基本的通讯时序模式.一种"短链接.一问一答"模式的.客户端首先发送消息,然后Receive,得到回复之后就关闭连接.另一种是长连接的,这个时候会异步地Receive,不管

java-JAVA客户端与服务端通信问题

问题描述 JAVA客户端与服务端通信问题 25C public void sendCMD(final byte[] bufferfinal String ip){ new Thread(new Runnable() { @Override public void run() { Socket socket=null; try{ socket = new Socket(InetAddress.getByName(ip) Proxys.PORT_RECEIVE + Max); InputStream

Android BLE与终端通信(三)——客户端与服务端通信过程以及实现数据通信

Android BLE与终端通信(三)--客户端与服务端通信过程以及实现数据通信 前面的终究只是小知识点,上不了台面,也只能算是起到一个科普的作用,而同步到实际的开发上去,今天就来延续前两篇实现蓝牙主从关系的客户端和服务端了,本文相关链接需要去google的API上查看,需要翻墙的 Bluetooth Low Energy:http://developer.android.com/guide/topics/connectivity/bluetooth-le.html 但是我们依然没有讲到BLE(

java-提问,有关客户端和服务端之间传输的问题,求大神们看看

问题描述 提问,有关客户端和服务端之间传输的问题,求大神们看看 我先在Client端读取了Emplist.xml文件,然后转换为字节流传输给Server端,再让Server端接收并读取,然后再写出到一个新的文件EmpList.但为什么文件里没有东西.如图: 解决方案 在while里对bos要用flush().因为你写的东西还缓存在缓冲区,没有写到存储器上.所以文件里看不到东西. 解决方案二: 首先确定客户端东西写过来了吗?在客户端和服务端都别忘了刷新,,对于字符流 用bufferedread和p

socket-Java中的Socket服务中如何实现客户端和服务端多次通讯

问题描述 Java中的Socket服务中如何实现客户端和服务端多次通讯 比如,服务器给客户端发一个信息.然后服务端根据客户端发送的信息判断,再回复一个信息,就是多次读和写的问题 解决方案 可以利用多线程, 服务器端不断接收客户端连接, 连接一个就开一个线程处理 客户端的交互, 解决方案二: 这里有一个简单的例子,Client端发送消息给Server端,并读取Server端的回复信息:而Server端则先读取Client端的数据,再回复数据.Server端: public class Main {