qaedtg 2010-03-27 13:18
浏览 616
已采纳

Java读取Web页面信息

/*
 *
 * @parm httpConn an object of class HttpURLConnection
 * @param url an object of URL
 */
httpConn = (HttpURLConnection)url.openConnection();
httpConn.connect();
InputStream cin = httpConn.getInputStream();

 可以实现Java读取一个Web页面的信息,如果用Java读取一个需要登录认证的Web页面的信息,应该怎么实现或者在此基础上做些什么改进???

  • 写回答

9条回答 默认 最新

  • wanghaolovezlq 2010-03-28 11:24
    关注

    httpclient 模拟登陆网站 获取网站内容程序
    package org.apache.http.examples.client;

    import java.io.IOException;

    import org.apache.commons.httpclient.*;
    import org.apache.commons.httpclient.cookie.*;
    import org.apache.commons.httpclient.methods.*;

    public class FormLoginDemo {
    static final String LOGON_SITE = "www.intellitrans.com.cn";
    static final int LOGON_PORT = 8081;
    static final String loginurl = "/zyzg/logon.do";
    static final String loginparematername = "userName";
    static final String loginparematerpass = "password";
    static final String username = "wangpx";
    static final String password = "111111";

    static final String getUrl = "/zyzg/hrmsub/hrm-deptlist.do"; 
    
    
    public static void main(String[] args) throws Exception { 
        HttpClient client = imitateLogin(LOGON_SITE, LOGON_PORT, loginurl, loginparematername, loginparematerpass, username, password); 
        // 访问所需的页面 
        imitateGetUrl(client, getUrl); 
    } 
    
    //模拟等录 
    private static HttpClient imitateLogin(String LOGON_SITE, int LOGON_PORT, 
            String loginurl,String loginparematername,String loginparematerpass,String username,String password) throws IOException, HttpException { 
        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); 
        System.out.println(post.getResponseBodyAsString()); 
        post.releaseConnection(); 
        // 查看cookie信息 
        CookieSpec cookiespec = CookiePolicy.getDefaultSpec(); 
        Cookie[] cookies = cookiespec.match(LOGON_SITE, LOGON_PORT, "/", false, 
                client.getState().getCookies()); 
        if (cookies != null) 
            if (cookies.length == 0) { 
                System.out.println("None"); 
            } else { 
                for (int i = 0; i < cookies.length; i++) { 
                    System.out.println(cookies[i].toString()); 
                } 
            } 
        return client; 
    } 
    //模拟等录 后获取所需要的页面 
    private static void imitateGetUrl(HttpClient client, String getUrl) 
            throws IOException, HttpException { 
        PostMethod post2 = new PostMethod(getUrl); 
        // GetMethod get = new 
        // GetMethod("/social/article/gallery_show/p_104846/"); 
        client.executeMethod(post2); 
        System.out.println(post2.getResponseBodyAsString()); 
        post2.releaseConnection(); 
    } 
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题