gpt4 book ai didi

java - 是否可以设置超时以断开已建立的 http 连接?

转载 作者:行者123 更新时间:2023-11-29 06:00:24 25 4
gpt4 key购买 nike

我正在编写一个文件上传应用程序。我可以使用 asyn 方法连接到服务器并上传文件 (apache http)。
服务器已将连接数限制为100。如果连接持续60秒,我想设置连接超时以断开连接。

流程如下:
(1) Android客户端建立与服务器的连接。 (60秒开始计时)
(2) 如果60s后连接还活着,则断开Android客户端

我知道将超时设置为 HttpParams 不起作用。我不知道该怎么做。
任何人都知道如何去做?欢迎任何解决方案或建议。谢谢!

以下是如何上传文件的代码 fragment :

try
{
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 60000);
HttpConnectionParams.setSoTimeout(httpParameters, 60000);


HttpClient client = new DefaultHttpClient(httpParameters);
...
ByteArrayBody bab = new ByteArrayBody(byteArray, "photo.jpg");
entity.addPart("photo", bab);
httpPost.setEntity(entity);

startTime = System.currentTimeMillis();


//ClientConnectionRequest connRequest = new ManagedClientConnection();
//httpPost.setConnectionRequest((ClientConnectionRequest) connRequest.getConnection(3000, TimeUnit.MILLISECONDS));

HttpResponse response = client.execute(httpPost, localContext);

Handler mHandler = new Handler();

BufferedReader reader = new BufferedReader(new InputStreamReader( response.getEntity().getContent(), "UTF-8"));
String result = "";
String tmp = "";



while ((tmp = reader.readLine()) != null)
{
result += tmp;
}
reader.close();

return result;

} catch (Exception e) {
Log.e(TAG, "error time = " + (System.currentTimeMillis() - startTime));
Log.e("httpUploadHandler", "Some error came up");
Log.e("httpUploadHandler", e.toString());

}


我可以通过调用断开连接:

client.getConnectionManager().shutdown();

但是我如何计算 60 秒才能断开 Activity 连接?另外,是否可以知道连接何时建立?

最佳答案

您是否尝试过设置套接字超时?它不同于连接超时。

params.setParameter( HttpConnectionParams.SO_TIMEOUT, 60000 );

其中 paramsBasicHttpParams 的实例,它被传递到 DefaultHttpClient 的构造函数中。

关于java - 是否可以设置超时以断开已建立的 http 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10353066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com