问题描述
我正在使用 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 (将#修改为@)