从Web方法获取java中的ajax响应(java.io.FileNotFoundException)

时间:2011-12-26 20:58:41

标签: java android ajax httpurlconnection

不知道如何更好地解释它,但我试图从包含函数的URL获得响应(对吗?)。

我正在研究这个问题已经很长时间了,并且每次都会进步一段时间,但最终无法实现这一目标。 这是chrome dev工具的请求和响应标头:

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中。

另外:我知道我有很多不必要的请求属性,但在代码工作之前我无法弄清楚哪些是不必要的。 在此先感谢:)

1 个答案:

答案 0 :(得分:1)

可悲的是,过去(并且可能仍然是)当您收到404错误时,HttpURLConnection会抛出FileNotFoundException。当您在第一次连接时执行getInputStream()时,服务器上的任何错误都会显示在那里。

如果您想在查询请求时查看HTTP域中的实际情况,请获取Wireshark或其他内容。