Webページでデータを取得したいので、Javaを使用してhttpリクエストをサーバーに送信します
URLConnection と Jsoup を試しましたが、どちらも正しい応答を得ることができません
ブラウザでURLを閲覧する場合
http://www.hkprinters.org/en/member_search.asp?page=1&mode=view
レスポンスが正しければ、検索結果が得られます
しかし、Javaを使用すると、検索のみを取得でき、結果は得られません。
応答が正しくない理由と、正しい応答を取得する方法を教えてください。
import java.io.*;
import java.util.*;
import java.net.*;
import org.json.*;
class HttpRequest
{
public static void main(String[] args) throws Exception
{
URL url = new URL("http://www.hkprinters.org/en/member_search.asp?page=1&mode=view");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.flush();
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("station.txt")));
String line;
while((line=rd.readLine())!=null)
{
out.write(line);
}
out.close();
}
}
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.jsoup.*;
public class read_line2 {
public static void main(String args[]) {
try {
Document doc = Jsoup.connect("http://www.hkprinters.org/en/member_search.asp?page=1&mode=view").get();
Document doc = Jsoup.parse(input, null);
Elements newHeadlines = doc.select("*");
System.out.println(newHeadlines);
} catch (Exception e) {
}
}
}
アップデート:
最初に正しい結果と間違った結果を説明したいと思います。
正解は検索フォーム+検索結果データ(会社名、住所、電話番号など)、これらのデータが欲しいです。
間違っているのは次のとおりです。
<title>db</title>
<title>func</title>
<!DOCTYPE HTML PUBLIC
........
<input type="hidden" name="hdnMode" value="search"/></form>
</table>
<font size="2"><br/>
ブラウザを使用して表示すると、検索フォームのみが表示され、結果は表示されません。
新しい発見は次のとおりです。ブラウザーを使用して、間違った結果を取得できるようになりました。ブラウザを閉じて再度開き、http: //www.hkprinters.org/en/member_search.asp?page=1&mode=view を参照すると、
そうすると、間違った結果が得られます。この結果は、JAVA の結果とまったく同じです。
<title>db</title>
<title>func</title>
<!DOCTYPE HTML PUBLIC
........
<input type="hidden" name="hdnMode" value="search"/></form>
</table>
<font size="2"><br/>
今、送信をクリックすることができれば (何も入力する必要はありません)、検索結果が再び表示されます。 get メソッド)、検索結果は引き続き表示されます。
このページは、最初に送信ボタンをクリックしたときに投稿データをセッションに保存すると思います。その後、このページを参照するたびに、セッションから検索キーが見つかるため、 get メソッドを使用してページとモードを送信しても、検索結果を教えてください。
しかし、JAVA を使用して同じセッションを実現する方法がわかりません。この例はありますか?