Получение ответа ajax в java из веб-метода (java.io.FileNotFoundException) - PullRequest
0 голосов
/ 27 декабря 2011

Не знаю, как объяснить это лучше, но я пытаюсь получить ответ от URL, содержащего функцию (верно?).

Я работаю над этим много часов и немного прогрессирую каждый раз, но не могу, чтобы это наконец заработало. Это заголовки запросов и ответов от chrome dev tools:

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 Ответ

1 голос
/ 27 декабря 2011

К сожалению, раньше (и, вероятно, до сих пор) HttpURLConnection генерирует исключение FileNotFoundException при получении ошибки 404.Когда вы выполняете getInputStream (), это происходит при первом подключении, поэтому там будет отображаться любая ошибка с сервера.

Получите Wireshark или что-то еще, если вы хотите увидеть, что на самом деле происходит в земле HTTP, как вы делаетезапрос.

...