日期:2014-05-20  浏览次数:20859 次

HttpClient登录百度无法成功,求解决,问题何在?
模拟登录百度,但始终登录失败
代码:
HttpManager写法

package cn.zhou.test;

import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.CookieStore;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.CookiePolicy;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.cookie.BasicClientCookie;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpParams;

public class HttpManager {
public static final String DEFAULT_CHARSET = "UTF-8";
private static final HttpManager instance = new HttpManager();
private DefaultHttpClient client = new DefaultHttpClient();
private HttpManager(){
HttpClientParams.setCookiePolicy(client.getParams(),CookiePolicy.BROWSER_COMPATIBILITY);
client.getParams().setParameter("http.protocol.single-cookie-header", true);
CookieStore cookieStore = new BasicCookieStore();
cookieStore.addCookie(new BasicClientCookie("BDUSS", "VpBeHNMMUVuQ0o3c2pXZ0tQYXB3SWpjTG1rZTVvQzZ3OHRaTHpDTkZVSm00RkpSQVFBQUFBJCQAAAAAAAAAAAEAAABtnVkYyvq-ocC0vdkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGZTK1FmUytRR"));
cookieStore.addCookie(new BasicClientCookie("BAIDUID", "1BE2294325A5959BFC652195D4C6754F:FG=1"));
cookieStore.addCookie(new BasicClientCookie("BAIDU_WISE_UID", "EAC7E7B67B6423D0053B993B87A7DC2A"));
client.setCookieStore(cookieStore);
}
public static HttpManager getHttpManager(){
return instance;
}
/**
 * 执行一个HTTP GET请求,返回请求响应的HTML
 * 
 * @param url
 *            请求的URL地址
 * @param queryString
 *            请求的查询参数,可以为null
 * @return 返回请求响应的HTML
 */
public String doGet(String url, Map<String, Object> queryParams) {
StringBuffer sb = new StringBuffer();
HttpGet method = new HttpGet(url);
if (queryParams != null) {
HttpParams params = new BasicHttpParams();
for (Map.Entry<String, Object> pv : queryParams.entrySet()) {
params.setParameter(pv.getKey(), pv.getValue());
}
method.setParams(params);
}
BufferedReader br = null;
try {
HttpResponse response = client.execute(method);
HttpEntity entity = response.getEntity();
InputStream ips = entity.getContent();
br = new BufferedReader(new InputStreamReader(ips, DEFAULT_CHARSET));