码迷,mamicode.com
首页 > 移动开发 > 详细

android - DefaultHttpClient设置超时.

时间:2015-02-10 00:33:33      阅读:231      评论:0      收藏:0      [点我收藏+]

标签:

Android的DefaultHttpClient中,超时设置需要调用HttpConnectionParams.setConnectionTimeout方法,如(以下代码的31~35行代码):

ref: Timeout in DefaultHttpClient Class Android

/**发送post请求的方法
		 * @param params 请求参数的键-值对.
		 * @param url
		 * @param encoding
		 * @param setTimeout 标识是否设置连接超时.
		 * @param connectionTimeout 如果设置连接超时,连接超时时间.
		 * @return
		 * @throws MalformedURLException
		 * @throws IOException
		 * @throws JSONException
		 * @throws ParseException
		 */
		private boolean postSend(final Map<String, String> params,
				final String url, final String encoding, boolean setTimeout, final int connectionTimeout)
				throws MalformedURLException, IOException, JSONException,
				ParseException {
			// 封装请求参数的键值对.
			List<BasicNameValuePair> pairs = new ArrayList<BasicNameValuePair>();
			for (Entry<String, String> param : params.entrySet()) {
				pairs.add(new BasicNameValuePair(param.getKey(), param
						.getValue()));
			}
			// 封装请求参数的实体.
			UrlEncodedFormEntity entity = new UrlEncodedFormEntity(pairs,
					encoding);
			// 使用post请求.
			HttpPost post = new HttpPost(url);
			post.setEntity(entity);
			// 使用DefaultHttpClient指定请求,以获取响应信息.
			DefaultHttpClient client = new DefaultHttpClient();
			//设置连接超时.
			if(setTimeout) {
				final HttpParams httpParameters = client.getParams();
				HttpConnectionParams.setConnectionTimeout(httpParameters, connectionTimeout);
			}
			HttpResponse response = client.execute(post);
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					response.getEntity().getContent(), encoding));
			// 使用线程安全的StringBuffer.
			StringBuffer buffer = new StringBuffer();
			String ln = null;
			while ((ln = reader.readLine()) != null)
				buffer.append(ln).append(System.getProperty("line.separator"));	//根据操作系统平台换行.
			// 传递json到Service处理.
			final String rawJsonStr = buffer.toString();
			//test only:
//			Log.i("sysout", rawJsonStr);
			resultAQIDays = convertJsonToAQIDayList(rawJsonStr);
			return response.getStatusLine().getStatusCode() == 200; // 等于200表示发送成功.
		}

 

android - DefaultHttpClient设置超时.

标签:

原文地址:http://www.cnblogs.com/listened/p/4282776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!