0 0

httpclient问题5

使用httpclient模拟登陆后获取html,代码如下:
    HttpClient client = new HttpClient();
    client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
    // 模拟登录
    PostMethod post = new PostMethod(loginurl);
    NameValuePair name = new NameValuePair(loginparematername,username );
    NameValuePair pass = new NameValuePair(loginparematerpass,password );
    post.setRequestBody(new NameValuePair[] { name, pass});
    int status = client.executeMethod(post);
    post.releaseConnection();   
    // 查看cookie信息
    CookieSpec cookiespec = CookiePolicy.getDefaultSpec();
    Cookie[] cookies = cookiespec.match(LOGON_SITE, 80, "/", false,
    client.getState().getCookies());
    String cookie="";
    if (cookies != null)
        if (cookies.length == 0) {
            System.out.println("None");
        } else {
            for (int i = 0; i < cookies.length; i++) {
              	cookie  +=   cookies[i].toString();   
             }
        } 
     //访问所需的页面  
    GetMethod   get   =   new   GetMethod( "/defalut.php");   
    int   st   =   client.executeMethod(get);   
  
       InputStream resStream = get.getResponseBodyAsStream();  
       BufferedReader br = new BufferedReader(new InputStreamReader(resStream, "UTF-8")); 
          StringBuffer resBuffer = new StringBuffer();  
          String resTemp = "";  
          while((resTemp = br.readLine()) != null){  
              resBuffer.append(resTemp + "\n");  
            }  
          String response = resBuffer.toString();  
          System.out.println(response);   


第一个页面defalut.php可以取出如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> 
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Welcome</title>
</head>
<frameset rows="*,0" frameborder="no" border="0" framespacing="0">
    <frame src="main.php" name="main" id="main" title="mainFrame" />
    <frame src="about:blank" name="bottom" scrolling="no" noresize="noresize" id="bottomFrame" title="bottom" />
</frameset>
<noframes><body>
</body></noframes>
</html>

修改程序后取main.php, 结果如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome</title>
</head>
<frameset rows="101,*" cols="*" frameborder="no" border="0" framespacing="0">
    <frame src="top.php?category=1" name="topFrame" scrolling="auto" noresize="noresize" id="topFrame" title="topFrame" />
    <frameset cols="240,*" frameborder="no" border="0" framespacing="0">
        <frame src="left.php?category=1&module=1" name="leftFrame" scrolling="auto" noresize="noresize" id="leftFrame" title="leftFrame" />
        <frame src="right.php" name="mainFrame" id="mainFrame" title="mainFrame" />
    </frameset>
</frameset>
<noframes>
    <body>
    </body>
</noframes>

再次改变获取页面为top.php?category=1,或 left.php?category=1&module=1或right.php,全部取到系统踢出用户的一个html,请问这是怎么回事?

问题补充:前面可获取页面的Headers如下:
Date: Fri, 29 Jun 2012 09:07:20 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.2.14
Server: Microsoft-IIS/6.0

未能获取html的页面Headers如下:
Date: Fri, 29 Jun 2012 09:08:15 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.2.14
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Server: Microsoft-IIS/6.0
2012年6月29日 16:51

1个答案 按时间排序 按投票排序

0 0

代码写的不好,被网站发现是机器人了,所以踢出。
可以用firebug监视,原来访问的地址是什么。
你用的是GetMethod,应该没这么简单,很多网页都要POST请求的,GET是不行滴。

2012年6月29日 17:13

相关推荐

    HttpClient问题:The server failed to respond with a valid HTTP resp

    在使用Apache HttpClient进行HTTP通信时,可能会遇到"HttpClient问题:The server failed to respond with a valid HTTP resp"这样的异常。这个错误通常表示服务器未能返回一个有效的HTTP响应,这可能是由多种原因...

    Android 9.0 httpclient问题

    Android 9.0 httpclient导致崩溃,找不到httpclient相关类,将包放入lib下即可

    彻底解决httpClient乱码问题

    本文将深入探讨如何使用HttpClient来彻底解决乱码问题。 HttpClient是一个功能强大的HTTP客户端,支持多种HTTP协议版本,包括GET、POST等请求方法,以及重试、连接管理等功能。在处理中文字符时,由于编码不一致...

    httpclient.jar包下载

    4. **重试和恢复策略**:HttpClient内置了重试和恢复策略,当网络出现问题时,可以自动进行重试,保证请求的可靠性。 5. **异步和同步模式**:HttpClient提供同步和异步两种操作模式,适应不同场景的需求。 提到...

    HttpClientHelper 工具类

    5. **异常处理**:HttpClientHelper 应该包含了适当的错误处理机制,如捕获网络异常、解析异常等,以确保在出现问题时能够给出适当的反馈。 6. **HTTP请求配置**:可能还提供了设置超时、添加HTTP头、携带Cookie等...

    httpclient-4.5jar

    httpclient-4.5所需jar包,里面包含httpclient-4.5.jar等等10个必须的开发包。 1.commons-codec-1.9.jar 2.commons-logging-1.2.jar 3.fluent-hc-4.5.jar 4.httpclient-4.5.jar 5.httpclient-cache-4.5.jar 6....

    HttpClient 3.x to HttpComponents HttpClient 4.x

    例如,在HttpClient 3.x中,代码可能会使用`***mons.httpclient.HttpClient`类和`***mons.httpclient.methods.GetMethod`等,而在4.x版本中,这些都被新的API所替代。程序员需要熟悉`org.apache....

    httpclient httpclient.jar

    在本文中,我们将深入探讨HttpClient的核心概念、使用方法以及如何通过`httpclient.jar`进行实战应用。 首先,HttpClient的主要组件包括: 1. **HttpClient实例**:这是整个HTTP通信的核心,负责管理连接、请求和...

    httpClient需要的jar包

    HttpClient是Apache基金会开发的一个Java库,它为Java程序员提供了一个强大的、灵活的、稳定的、功能丰富的客户端HTTP通信框架。...同时,及时关注Apache HttpClient的更新,以便利用新特性并修复已知问题。

    Java HttpClient 全部的jar包

    在HttpClient中,这个库用于处理URL编码和解码,以及在HTTP请求头或参数中可能涉及到的其他编码问题。 3. `commons-collections-3.2.jar`: Apache Commons Collections提供了对Java集合框架的扩展和增强,包括集合...

    httpclient4.2.1.zip

    本文将深入探讨HttpClient 4.2.1的核心特性和使用方法,帮助开发者更好地理解和应用这个强大的工具。 一、HttpClient简介 HttpClient是一个开放源码的Java库,由Apache软件基金会维护。它为Java程序员提供了一个...

    httpclient

    创建HttpClient实例是使用HttpClient的第一步。通常,我们会创建一个`CloseableHttpClient`对象,这可以通过`HttpClientBuilder`或者`HttpAsyncClientBuilder`来实现。例如: ```java CloseableHttpClient ...

    HttpClient 调用WebService示例

    在本文中,我们将深入探讨如何使用HttpClient调用WebService。 首先,调用WebService通常涉及SOAP(Simple Object Access Protocol)或RESTful API。HttpClient可以处理这两种类型的Web服务。在本示例中,我们假设...

    Httpclient依赖包

    3. **身份验证**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证、NTLM、Kerberos等,能够处理跨域和多层代理的认证问题。 4. **Cookie管理**:HttpClient内置了Cookie管理器,可以处理服务器返回的...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的HttpClient库是一个不可或缺的工具。本文将深入解析`commons-httpclient-3.0.jar`,它是HttpClient的一个重要...

    HTTPClient 的一个封装

    这个“HTTPClient的一个封装”显然指的是对Apache HttpClient库进行了定制化处理,以适应特定项目需求或者简化API使用。下面将详细讨论HttpClient的核心概念、封装的目的以及可能实现的方式。 HttpClient是Apache...

    httpclient4.3工具类

    10. **线程安全**:为了适应多线程环境,`httpclientUtils`可能已经考虑了HttpClient实例的线程安全问题,确保在并发环境中正确使用。 在实际使用`httpclientUtils`时,开发者可以通过调用工具类提供的方法,如`...

    使用httpclient解决跨域问题

    我使用的是httpClient 进行内部转发 我们在A的服务器上,将前台的文件流,通过httpClient传输到B的服务器上(B的服务器通过控制层接受A传输的文件流,让后保存在B的服务器上。返回一个json结果)

    httpClient实例httpClient调用 http/https实例 忽略SSL验证

    这个实例主要涉及如何配置HttpClient来忽略SSL(Secure Socket Layer)验证,这对于在开发和测试环境中处理自签名证书或未认证的服务器非常有用。以下将详细介绍HttpClient的使用以及如何进行SSL验证的忽略。 首先...

Global site tag (gtag.js) - Google Analytics