gpt4 book ai didi

java - 如何在JAVA中获得正确的HTTP响应?

转载 作者:行者123 更新时间:2023-12-01 17:30:05 24 4
gpt4 key购买 nike

我想在网页上获取一些数据,所以我使用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/>

现在,如果您可以点击提交(不需要输入任何内容),那么搜索结果将再次显示,现在即使您只浏览http://www.hkprinters.org/en/member_search.asp?page=1&mode=view (get方法),搜索结果仍然显示。

所以我猜当我第一次点击提交按钮时,这个页面将帖子数据保存到 session 中,之后,每次我浏览这个页面,它都会从 session 中找到搜索键,所以即使我使用 get 方法来发送页面和模式,它仍然给我搜索结果。

但是我不知道如何使用JAVA实现相同的 session ,有什么例子吗?

最佳答案

如果您没有在请求中发送任何内容,请注释以下行:

conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.flush();

关于java - 如何在JAVA中获得正确的HTTP响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11956163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com