2010-7-16 15:10:53 org.apache.http.impl.client.DefaultRequestDirector execute 信息: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond 2010-7-16 15:10:53 org.apache.http.impl.client.DefaultRequestDirector execute 信息: Retrying request 2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute 信息: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond 2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute 信息: Retrying request 2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute 信息: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond 2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute 信息: Retrying request Exception in thread "main" org.apache.http.NoHttpResponseException: The target server failed to respond at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:101) at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:210) at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:271) at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:227) at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:209) at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:292) at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:126) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:483) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576) at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554) at framework.common.http.BaiduPost.main(BaiduPost.java:51) 捕着处理信息:目标服务器没有回应
信息: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond
2010-7-16 15:10:53 org.apache.http.impl.client.DefaultRequestDirector execute
信息: Retrying request
2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute
信息: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond
2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute
信息: Retrying request
2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute
信息: I/O exception (org.apache.http.NoHttpResponseException) caught when processing request: The target server failed to respond
2010-7-16 15:10:54 org.apache.http.impl.client.DefaultRequestDirector execute
信息: Retrying request
Exception in thread "main" org.apache.http.NoHttpResponseException: The target server failed to respond
at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:101)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:210)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:271)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:227)
at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:209)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:292)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:126)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:483)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
at framework.common.http.BaiduPost.main(BaiduPost.java:51)
捕着处理信息:目标服务器没有回应
tr id="vcodeTr" style="display:none;">
<td class="f14" valign="top">验证码:</td>
<td><input type="text" name="verifycode" class="ip" style="width:60px" maxlength="4"/>
<br />
<span class="fgy">请输入下面的字符</span><br />
<img src="/?verifypic" width="100" height="40" id="verifypic" /> <a href="javascript:newverifypic();" title="看不清左边的字符">看不清?</a></td> </tr>它在登录的时候是需要输入验证码的,而这个验证码是是一个图片的形式,你获取不到里面的字母数字,是没法用httpclient进行登录的
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
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.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpParams;/**
* 使用httpclient4登陆百度
* @author gohands
*
*/
public class BaiduLogin {
private static String URL_CHARACTER = "gb2312"; // 统一字符集
/**
* @param args
*/
public static void main(String[] args) throws Exception {
//初始化
DefaultHttpClient httpclient = new DefaultHttpClient();
// 这一行必须要加,否则服务器无法获取登陆状态
HttpClientParams.setCookiePolicy(httpclient.getParams(),CookiePolicy.BROWSER_COMPATIBILITY); // 第一次访问
String url = "http://www.baidu.com";
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
System.out.println("Length1::" + response.getEntity().getContentLength());
HttpEntity entity = response.getEntity();
BaiduLogin.printEntity(entity); // 使用POST方式登录
HttpPost httpost = new HttpPost("http://passport.baidu.com/?login");
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("username", "111"));
nvps.add(new BasicNameValuePair("password", "111"));
httpost.setEntity(new UrlEncodedFormEntity(nvps, BaiduLogin.URL_CHARACTER)); HttpParams params=httpclient.getParams();
System.out.println(params.getParameter("username"));
response = httpclient.execute(httpost);
// 第二次访问
System.out.println("\n----------------------------------------");
System.out.println(response.getStatusLine());
List<Cookie> cookies = httpclient.getCookieStore().getCookies();
entity = response.getEntity();
BaiduLogin.printEntity(entity);
System.out.println("\n----------------------------------------"); cookies = httpclient.getCookieStore().getCookies(); System.out.println("cookies" + cookies.size());
httpget = new HttpGet(url);
// httpget.setr
// httpget.setHeader(name, value)
response = httpclient.execute(httpget);
System.out.println("Length2::"
+ response.getEntity().getContentLength());
entity = response.getEntity();
BaiduLogin.printEntity(entity);
} /**
* 输出entity内容,获取和输出返回的HTML文
* @param entity
* @throws IllegalStateException
* @throws IOException
*/
private static void printEntity(HttpEntity entity)
throws IllegalStateException, IOException { if (entity == null) {
return;
}
System.out.println("HttpEntity start >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
System.out.println("Response content length: " + entity.getContentLength());
InputStream is = entity.getContent();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
List<Byte> li = new ArrayList();
int i; //之所以写的如此复杂是因为了解决中文问题
while ((i = is.read()) != -1) {
li.add((byte) i);
}
byte a[] = new byte[li.size()];
for (i = 0; i < a.length; i++) {
a[i] = (byte) li.get(i);
}
System.out.println(new String(a, BaiduLogin.URL_CHARACTER)); // 打印HTML内容
entity.consumeContent(); // entity销毁
System.out.println("HttpEntity END >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
}
}