现在的位置: 首页 > 综合 > 正文

Android http请求数据 设置超时

2018年04月13日 ⁄ 综合 ⁄ 共 1410字 ⁄ 字号 评论关闭

以前一直在写http请求,设置超时也没怎么认真测试过,今天项目不怎么忙,写了一个http请求测了一下发现以前设置的超时根本没起作用,原来是在发送请求之后设置的超时时间,说着比较迷糊,还是直接上代码。

http请求代码:

/**
	 * http Post请求的过程
	 * @param postParameters:请求服务端接口需要的数据
	 * @param url:请求接口的地址
	 * @return result
	 */
	private static String requestPost(List<NameValuePair> postParameters,String url) {
		String result = null;
		BufferedReader in = null;
		try {
			HttpClient client = new DefaultHttpClient();
			//Represents a collection of HTTP protocol and framework parameters
			HttpParams params = null;
			params = client.getParams();
			//set timeout
			HttpConnectionParams.setConnectionTimeout(params, 5000);
			HttpConnectionParams.setSoTimeout(params, 35000);
			// url为访问地址
			HttpPost request = new HttpPost(url);
			UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(
					postParameters,"utf-8");
			request.setEntity(formEntity);
			// 通过execute()执行httppost调用
			HttpResponse response = client.execute(request);
			
			// 读取返回结果
			in = new BufferedReader(new InputStreamReader(response.getEntity()
					.getContent()));
			StringBuffer sb = new StringBuffer("");
			String line = "";
			// 换行操作
			String NL = System.getProperty("line.separator");
			while ((line = in.readLine()) != null) {
				sb.append(line + NL);
			}
			in.close();
			result = sb.toString();
			Log.d("返回数据", result);
		} catch (Exception e) {
			result = "NetError";
			Log.i("Error", "Exception"+e.getMessage());
		} finally {
			if (in != null) {
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		return result;
	}

其实执行请求就是client.execute(request);将设置超时放在执行之前就OK了,可以控制超时随心所欲了,以前一直没注意这个问题,看了一下以前的代码,有好几处写在了execute()之后,所以感觉上是控制时间老不对,其实走的超时是默认的超时!不知道童鞋们有没有遇到同样的问题!

抱歉!评论已关闭.