【问题标题】:Getting an ajax response in java from a web method (java.io.FileNotFoundException)从 Web 方法 (java.io.FileNotFoundException) 在 java 中获取 ajax 响应
【发布时间】:2011-12-26 20:58:41
【问题描述】:

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

我为此工作了很多小时,每次都取得了一点进步,但最终无法让它发挥作用。 这是来自 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 中。

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

【问题讨论】:

标签: java android ajax httpurlconnection


【解决方案1】:

遗憾的是,当您收到 404 错误时,HttpURLConnection 曾经(并且可能仍然是)抛出 FileNotFoundException。当您执行 getInputStream() 时,它是第一次连接,因此来自服务器的任何错误都会显示在那里。

如果您想在发出请求时查看 HTTP 领域的实际情况,请获取 Wireshark 或其他工具。

【讨论】:

  • 非常感谢 Wireshark 的提示!我让它工作了(问题是请求体不是作为应用程序/json发送的,而且写作也不好)。现在我有另一个问题,我发送的两个请求正文(一个来自浏览器,一个来自 eclipse)由于某种原因编码不同......我尝试更改内容类型字符集但没有解决它。
  • 对不起...没有完成我的评论,无法编辑它。非常感谢 Wireshark 的提示!我让它工作了(问题是请求体不是作为应用程序/json发送的,而且写作也不好)。现在我有另一个问题,我发送的两个请求正文(一个来自 chrome 浏览器,一个来自 eclipse)由于某种原因编码不同......我尝试更改内容类型字符集但没有解决它。这是比较的两个请求(第一个是好的,第二个不是):link(查看“prefixText”键)
  • 您应该为此提出不同的问题,因为该问题与此问题无关(它将帮助下一个查找此问题的人)。我不知道我脑海中的答案,但是当你发布它时,我会看看你的新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-29
  • 1970-01-01
  • 2021-02-07
  • 2018-07-13
  • 2011-08-22
  • 1970-01-01
相关资源
最近更新 更多