使用代理需要导入:commons-logging-1.1.jar,httpclient-4.0-beta2.jar ,httpcore-4.1-alpha1.jar 和 commons-codec-1.4.jar架包。
在连接代理时需要使用用户名和密码构造UsernamePasswordCredentials对象并作为参数传递给HttpClient对象。
具体用法如下:
public static void main(String args[]){
StringBuffer sb = new StringBuffer()
//创建HttpClient实例
HttpClient client = getHttpClient()
//创建httpGet
HttpGet httpGet = new HttpGet("http://www.csdn.net")
//执行
try {
HttpResponse response = client.execute(httpGet)
HttpEntity entry = response.getEntity()
if(entry != null)
{
InputStreamReader is = new InputStreamReader(entry.getContent())
BufferedReader br = new BufferedReader(is)
String str = null
while((str = br.readLine()) != null)
{
sb.append(str.trim())
}
br.close()
}
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace()
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
System.out.println(sb.toString())
}
//设置代理
public static HttpClient getHttpClient() {
DefaultHttpClient httpClient = new DefaultHttpClient()
String proxyHost = "proxycn2.huawei.com"
int proxyPort = 8080
String userName = "china\\******"
String password = "*******“
httpClient.getCredentialsProvider().setCredentials(
new AuthScope(proxyHost, proxyPort),
new UsernamePasswordCredentials(userName, password))
HttpHost proxy = new HttpHost(proxyHost,proxyPort)
httpClient.getParams().setParameter(ConnRouteParams.DEFAULT_PROXY, proxy)
return httpClient
}
这问题,一开始就有。因为忙着忙着也没管。后来发现还是很有需要灵活修改代理ip和端口号的。所以得处理一波了。
因为本身做Android出身,就草船借鉴了下Android里的设置点个8下,进入开发者模式的套路。看到这,系不系心如明镜般?哈哈~ 摸着Android过河也是可以的。
解决方案有了:
我们设置了20次,点点点吧,减小误触几率。
这个Http代理填写IP和端口号的页面,可以新开一个,就是两个输入框,点Submit后,重置Dio实例,并把代理设置给HttpClient。
这里需要注意的是,如果你这里重置了client.findProxy,那么一定要重新实例化Dio实例,不然不生效。这一点也可以在源码中得到印证.
^_^,这就搞完了。还挺简单的。但是确实解决了很大的问题,也很灵活。大家自行拿去试试吧。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)