2011-12-26 15 views
0

不知道如何更好地解釋它,但我試圖從包含函數的URL(對吧?)獲取響應。從Web方法獲取java中的ajax響應(java.io.FileNotFoundException)

我正在爲此工作了很多小時,每次都有所進展,但無法完成此工作。 這是Chrome瀏覽器開發工具的請求和響應頭:

Headers

我的代碼是:

String params = "{\"prefixText\":\"" + city 
        + "\",\"count\":10,\"contextKey\":\"he\"}"; 
conn = (HttpURLConnection) new URL(
     "http://bus.gov.il/WebForms/wfrmMain.aspx/GetCompletionList") 
     .openConnection(); 
conn.setDoOutput(true); 
conn.setRequestMethod("POST"); 
conn.setChunkedStreamingMode(0); 
// conn.setFixedLengthStreamingMode(params.length()); 
conn.addRequestProperty("Accept", "*/*"); 
conn.addRequestProperty("Content-Type", "application/json; charset=UTF-8"); 
conn.addRequestProperty("Content-Length", String.valueOf(params.length())); 
conn.addRequestProperty("Host", "bus.gov.il"); 
conn.addRequestProperty("Origin", "http://bus.gov.il"); 
conn.addRequestProperty("X-Requested-With", "XMLHttpRequest"); 
conn.addRequestProperty("Referer", 
     "http://bus.gov.il/WebForms/wfrmMain.aspx?width=1024&company=1&language=he&state="); 
OutputStream os = new BufferedOutputStream(conn.getOutputStream()); 
os.write(params.getBytes()); 
String answer = readStream(conn.getInputStream()); 

調用「的getInputStream」當我得到的異常(我在堆棧跟蹤看到)在這條線:

String answer = readStream(conn.getInputStream());

進入readStream功能之前!

我不知道如何解決它...

試圖尋找有關的XMLHttpRequest但認爲這只是在JS。

另外:我知道我有很多不必要的請求屬性,但我不知道哪些是不必要的,直到代碼將工作。 在此先感謝:)

+0

任何需要的工作代碼: http://pastebin.com/kFZwA5zR – RonLut 2011-12-27 09:38:23

回答

1

不幸的是,它曾經是(可能仍然是),當你得到404錯誤時,HttpURLConnection拋出FileNotFoundException。當你在做第一次連接時的getInputStream(),所以服務器的任何錯誤都會顯示在那裏。

如果您想要查看HTTP請求中發生的事情,請獲取Wireshark或其他東西。

+0

非常感謝Wireshark提示! 我做了它的工作(問題是,請求的身體被髮送不作爲applicaton/JSON和寫作也不好)。 現在我還有一個問題,我發送的兩個請求體(一個來自瀏覽器,另一個來自eclipse)由於某種原因編碼不同...... 我嘗試更改內容類型字符集,但沒有解決它。 – RonLut 2011-12-27 00:52:03

+0

對不起...沒有完成我的評論,不能編輯它.. 非常感謝Wireshark提示! 我做了它的工作(問題是,請求的身體被髮送不作爲applicaton/JSON和寫作也不好)。 現在我還有一個問題,由我發送的兩個請求體(一個來自chrome瀏覽器和一個來自eclipse)的編碼方式不同,出於某種原因... 我試圖更改內容類型字符集,但沒有解決它。 這裏是比較兩個請求(首先是好的,第二不是): [鏈接](http://imageshack.us/photo/my-images/59/chromeeclipse.jpg/) (看看「prefixText」鍵) – RonLut 2011-12-27 01:10:22

+0

你應該提出一個不同的問題,因爲這個問題與這個問題沒有關係(它會幫助下一個看這個問題的人)。我不知道我頭頂上的答案,但是當你發佈它時,我會看看你的新問題。 – 2011-12-27 01:13:24