我想在一個網頁得到一些數據,所以我用Java來發送一個HTTP請求到服務器如何在JAVA中獲得正確的HTTP響應?
我已經試過的URLConnection和Jsoup,但他們都不能得到正確的響應
如果瀏覽網址在瀏覽器
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方法),搜索結果仍顯示出來。
所以我想這個頁面保存發佈數據到會話時,我第一次點擊提交按鈕,之後,每次我瀏覽這個頁面時,它會從會話中找到搜索鍵,所以即使我使用get方法發送頁面和模式,它仍然給我的搜索結果。
但我不知道如何使用JAVA實現相同的會話,任何這樣的例子?
您希望得到哪種反應?您實際得到哪種反應? – Tedil 2012-08-14 16:02:54
嘗試用'conn.setRequestProperty(「User-Agent」,「Mozilla/5.0(Macintosh; U;英特爾Mac OS X 10.4; en-US; rv:1.9.2.2)Gecko/20100316 Firefox/3.6.2" )'。 asp頁面可能在用戶代理字符串或cookie上。 – ZnArK 2012-08-14 16:05:27
它給出了空白的響應或拋出異常? – 2012-08-14 16:16:12