HttpClient设置超时的问题

============问题描述============


我试了很多种方法设置HttpClient超时问题就没有效果,我之前设置连接超时为5秒,读取超时为5秒,一次请求不成功到返回用了20秒,然后我回家写了一个demo,各种方法试,没效果,求大神帮我看看,感激不尽
package com.example.connectiontimeout;



import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;



import org.apache.http.HttpResponse;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.apache.http.params.CoreConnectionPNames;

import org.apache.http.params.HttpConnectionParams;



import android.app.Activity;

import android.os.AsyncTask;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;



public class MainActivity extends Activity{

	private Button button;



	@Override

	protected void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);

		setContentView(R.layout.activity_main);

		button = (Button)findViewById(R.id.button1);

		button.setOnClickListener(new OnClickListener() {

			

			@Override

			public void onClick(View v) {

				new TimeoutAsyncTask().execute();

			}

		});

	}



	//异步超时任务

	public class TimeoutAsyncTask extends AsyncTask<Void, Void, String>{



		@Override

		protected String doInBackground(Void... voids) {

			String result = null;

			HttpResponse httpResponse;

			BufferedReader br = null;

			

			//访问这样子一个不存在的网站http://www.xiaanming.com/

			HttpGet httpGet = new HttpGet("http://www.xiaanming.com/");

			HttpClient httpClient = new DefaultHttpClient();

			

			//方法一, 此方法设置超市无效  要等1分20多秒

			httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);

			httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 3000);

			

			//方法二,无效,还是了很多种方法

//			HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 3000);

//			HttpConnectionParams.setSoTimeout(httpClient.getParams(), 2000); 

			

//	        

			

			try {

				httpResponse = httpClient.execute(httpGet);

				if(httpResponse.getStatusLine().getStatusCode() == 200){

					br = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent()));

					String line = null;

					while((line = br.readLine()) != null){

						result = result + line;

					}

				}

			} catch (ClientProtocolException e) {

				e.printStackTrace();

			} catch (IOException e) {

				e.printStackTrace();

			}finally{

				try {

					if(br != null){

						br.close();

						br = null;

					}

				} catch (IOException e) {

					e.printStackTrace();

				}

				

				httpClient.getConnectionManager().shutdown();

			}

			

			return result;

		}

	}



	

}


代码就是上面的啦,一个按钮,点击请求网络,http://www.xiaanming.com是一个不存在的域名

============解决方案1============


我测试过了啊,下面的代码是有效的:
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 15000);

HttpConnectionParams.setSoTimeout(httpClient.getParams(), 10000);

转载于:https://www.cnblogs.com/lengyanyue39/p/4030346.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值