0

Webページにログインしてhtmlを解析するときに、bashスクリプトがあります。私が使用したコマンドは wget です。

wget --save-cookies=cookies.txt --post-data "uid=USER&pass=PWD" http://www.spanishtracker.com/login.php

wget --load-cookies=cookies.txt "http://www.spanishtracker.com/torrents.php"  -O OUTPUT

今、私はJavaでこれらを作ろうとしています。まず第一に、リクエストを POST しようとしていますが、実行すると、ログに記録されたように出力が得られません。これらはJavaのコードです:

try {
        data = URLEncoder.encode("uid", "UTF-8") + "=" + URLEncoder.encode("USER", "UTF-8");
        data += "&" + URLEncoder.encode("pass", "UTF-8") + "=" + URLEncoder.encode("PASS", "UTF-8");

                // Send the request
                URL url = new URL("http://www.spanishtracker.com/index.php");
                URLConnection conn = url.openConnection();


                conn.setDoOutput(true);

                OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

                //write parameters
                writer.write(data);
                writer.flush();

                // Get the response
                StringBuffer answer = new StringBuffer();
                BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
                String line;
                while ((line = reader.readLine()) != null) {
                    answer.append(line);
                }
                writer.close();
                reader.close();
                // temporary to build request cookie header
                StringBuilder sb = new StringBuilder();

                // find the cookies in the response header from the first request
                List<String> cookies = conn.getHeaderFields().get("Set-Cookie");
                if (cookies != null) {
                    System.out.println("Hay cookies para guardar");
                    for (String cookie : cookies) {
                        if (sb.length() > 0) {
                            sb.append("; ");
                        }

                        // only want the first part of the cookie header that has the value
                        String value = cookie.split(";")[0];
                        sb.append(value);
                    }
                }

私を手伝ってくれますか。私の英語に感謝し、申し訳ありません!

4

1 に答える 1

0

Apache HttpClient ライブラリリンクを使用する

于 2012-10-30T17:48:42.947 に答える