httpcliet 시간 초과 재연결 설정

1672 단어
httpcliet는 세 가지 시간 초과
ConnectionPoolTimeout: ConnectionManager가 관리하는 연결 풀에서 연결 시간을 초과합니다.ConnectionTimeout: 네트워크와 서버가 연결되는 시간 초과Socket Timeout: Socket이 데이터를 읽는 시간 초과 시간, 즉 서버에서 응답 데이터를 얻는 데 기다리는 시간입니다.
Connection Timeout만 설정되어 있는 경우 Socket Timeout을 설정하지 않으면 데이터 가져오기를 계속 기다리게 될 수 있습니다.연결 시간이 초과되면 시간 초과 중련을 설정할 수도 있습니다.
public static String getdata(String url, List<NameValuePair> params) {
  
		String tag = "";
		DefaultHttpClient  httpClient = new DefaultHttpClient();		
		httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 8000);// 
		httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);// 
		DefaultHttpRequestRetryHandler dhr = new DefaultHttpRequestRetryHandler(1, true);// 1
		httpClient.setHttpRequestRetryHandler(dhr);
		HttpPost post = new HttpPost(url);

		try {
			UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");

			post.setEntity(entity);
			try {
				HttpResponse httpResponse = httpClient.execute(post);
				tag = "get string false";
				int connectstate = httpResponse.getStatusLine().getStatusCode();
				if (connectstate == 200) {
					HttpEntity entity2 = httpResponse.getEntity();
					tag = EntityUtils.toString(entity2);
				} else {
					System.out.println("connect state is: " + connectstate);
					return null;
				}
			} catch (ClientProtocolException e) {
				e.printStackTrace();
			} catch (SocketTimeoutException e) {
				return null;
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return tag;

	}

좋은 웹페이지 즐겨찾기