如何解决如何打开一个持久的 http 连接,通过它我可以使用 Apache HttpClient 库从服务器连续读取输入流?
我正在使用 Apache HttpClient 库并且我正在尝试打开一个持久的 http 连接。有一些示例可以让我打开连接,但是我找不到任何使用某种循环来持续检查我是否从服务器接收数据的示例。我们使用本地服务器,每次发生特定事件时都会通过永久连接发送消息。我无法定期发送 GET 请求,因为这会打开新连接。
我的初始化函数:
public void initHTTP(String username,String password)
{
this.username = username;
this.password = password;
connectionManager = new BasicHttpClientConnectionManager();
BasicCredentialsProvider provider = new BasicCredentialsProvider();
provider.setCredentials(new AuthScope("192.168.0.241",80),new UsernamePasswordCredentials(username,password.tochararray()));
httpClient = HttpClientBuilder.create()
.setDefaultCredentialsProvider(provider)
.setKeepAliveStrategy(DefaultConnectionKeepAliveStrategy.INSTANCE)
.build();
receiveThread.start();
}
我的GET请求函数:
public void doGETRequest(final String url)
{
Runnable run = new Runnable() {
@Override
public void run() {
try
{
HttpGet request = new HttpGet(url);
HttpClientResponseHandler responseHandler = new HttpClientResponseHandler() {
@Override
public Object handleResponse(ClassicHttpResponse response) throws HttpException,IOException {
//Log.d("DEBUG","CODE: " + response.getCode());
if(response.getCode() == 200)
{
char[] out = new char[10000];
connectionMade = true;
httpentity entity = response.getEntity();
InputStreamReader reader = new InputStreamReader(entity.getContent());
BufferedReader bufferedReader = new BufferedReader(reader);
bufferedReader.read(out,10000);
bufferedReader.close();
Log.d("DEBUG","RESPONSE: " + new String(out));
}
else if(response.getCode() == 401)
{
//Do nothing yet
}
return null;
}
};
httpClient.execute(request,responseHandler);
}
catch (IOException e)
{
Log.d("DEBUG","IOException: " + e.getMessage());
}
}
};
Thread thread = new Thread(run);
thread.start();
}
我正在寻找某种方法来持续检查新消息。
谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。