gpt4 book ai didi

java - HttpURLConnection 随机延迟

转载 作者:行者123 更新时间:2023-12-01 06:11:53 24 4
gpt4 key购买 nike

当我使用 UploadHelper 时,我注意到随机基础上有大约 1.1-1.3 秒的小延迟。所以这不是第二个请求,它可能是第一个,也可能是第四个请求。有时它可以完美地工作,没有任何明显的延迟。似乎在调用 c.getInputStream() 时出现延迟: BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));

有人在我的类(class)中看到了奇怪的行为,或者也许有更好的解决方案来解决这个问题?已经尝试将超时设置从 10.000ms 更改为 1.000ms,这解决了同样的问题,但延迟更大。平均延迟为3秒,当我将超时更改为1000时,延迟变为最大。 1.3秒。

我的类(class):

public class MyUploadHelper {

private static final int timeout = 1000;
private static final String API_SERVER = "http://domain.nl/json/";
private static final String TAG = "MyUploadHelper";

public MyUploadHelper(){

}

public <T> T upload(Class<T> a, String url, Map<String, String> paramMap) throws Exception {

HttpURLConnection c = null;

try {
URL u = new URL(API_SERVER + url);
c = (HttpURLConnection) u.openConnection();
// c.setRequestProperty("Content-length", "0");
c.setUseCaches(false);
c.setAllowUserInteraction(false);
// c.setConnectTimeout(timeout);
c.setReadTimeout(timeout);
c.setDoOutput(true);

List<NameValuePair> params = new ArrayList<NameValuePair>();

for (String key : paramMap.keySet() ) {
String value = paramMap.get( key );
params.add(new BasicNameValuePair(key, value));
}

OutputStream os = c.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(prepareParams(params));

writer.flush();
writer.close();


c.connect();

int status = c.getResponseCode();
Log.d(TAG, "Server API URL: " + u.toString() + ", ResponseCode:" + String.valueOf(status));
switch (status) {
case 200:
case 201:
Gson gson = new Gson();
BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
return gson.fromJson(br, a);
}

} catch (IOException ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
} finally{
if (c != null) {
try {
c.disconnect();
} catch (Exception ex) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
return null;
}

private String prepareParams(List<NameValuePair> params) throws UnsupportedEncodingException
{
StringBuilder result = new StringBuilder();
boolean first = true;

for (NameValuePair pair : params)
{
if (first)
first = false;
else
result.append("&");

result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
result.append("=");
result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
}

return result.toString();
}


}

最佳答案

尝试设置

c.setConnectTimeout(1000);

关于java - HttpURLConnection 随机延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32817325/

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