剁猪肉馅 发表于 2014-03-11 16:26

java发送http请求,解析html返回问题

java发送http请求(含登陆用户名和密码),登陆结果解析html返回,为什么我这边会出问题啊?代码也没有什么问题啊!登录名和密码完全没用,返回的html文件总是网站首页未登录状态!!!求大神给指点一下!下面是代码!


public class TestPost {

    public static void testPost() throws IOException {

      /**
         * 首先要和URL下的URLConnection对话。 URLConnection可以很容易的从URL得到。比如: // Using
         *java.net.URL and //java.net.URLConnection
         */
      URL url = new URL("https://passport.csdn.net/account/login");
      URLConnection connection = url.openConnection();
      /**
         * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
         * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
         */
      connection.setDoOutput(true);
      /**
         * 最后,为了得到OutputStream,简单起见,把它约束在Writer并且放入POST信息中,例如: ...
         */
      OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), "8859_1");
      out.write("username=go_shq&password=**********"); //post的关键所在!   
      // remember to clean up   
      out.flush();
      out.close();
      /**
         * 这样就可以发送一个看起来象这样的POST:
         * POST /jobsearch/jobsearch.cgi HTTP 1.0 ACCEPT:
         * text/plain Content-type: application/x-www-form-urlencoded
         * Content-length: 99 username=bob password=someword
         */
      // 一旦发送成功,用以下方法就可以得到服务器的回应:   
      String sCurrentLine;
      String sTotalString;
      sCurrentLine = "";
      sTotalString = "";
      InputStream l_urlStream;
      l_urlStream = connection.getInputStream();
      // 传说中的三层包装阿!   
      BufferedReader l_reader = new BufferedReader(new InputStreamReader(l_urlStream));
      while ((sCurrentLine = l_reader.readLine()) != null) {
            sTotalString += sCurrentLine;
      }
      //System.out.println(sTotalString);
      File f = new File("d:/b.html");
      BufferedWriter bw = new BufferedWriter(new FileWriter(f));
      bw.write(sTotalString);
      bw.close();
    }

    public static void main(String[] args) throws IOException {

      testPost();
      }
}

剁猪肉馅 发表于 2014-03-12 00:34

:dizzy::dizzy::dizzy:求解救啊!!

ddd010 发表于 2014-03-12 16:45

伙计,建议你先理解下http协议,至少要先搞懂get/post请求。

你这么发送请求也太小看CSDN了吧,你先抓包看看登陆流程的数据。

剁猪肉馅 发表于 2014-03-13 09:51

回复 3# ddd010
恩,这个是原来另一个网站的用户登录数据,在csdn上是不行,但是我也抓过csdn的是下面这样的数据
ccounthandler.ashx?t=log&u=sdfwq&p=sqwefa&remember=0&f=http%3A%2F%2Fwww.csdn.net%2F&rand=0.673421390587464
我用这样的数据试了一下还是不行的!代码了解了一下,只懂意思,但是为什么不行还是要请教一下专业方面的

   

ddd010 发表于 2014-03-13 10:25

剁猪肉馅 发表于 2014-03-13 09:51 static/image/common/back.gif
回复 3# ddd010
恩,这个是原来另一个网站的用户登录数据,在csdn上是不行,但是我也抓过csdn的是下面这样 ...


不对,请求头,回应头,这些数据你都不管?

剁猪肉馅 发表于 2014-03-13 14:28

请求头,回应头?这些都是什么?:dizzy:

剁猪肉馅 发表于 2014-03-13 14:29

回复 5# ddd010


    请求头,回应头?这些都是什么? 我在抓取登陆流程的时候没看到这些啊。
页: [1]
查看完整版本: java发送http请求,解析html返回问题