Вызов службы Spring (import java.net.URL. * Package) POST его вызов, но получение java.io.FileNotFoundException в ответ - PullRequest
0 голосов
/ 13 мая 2011

Я пытаюсь настроить базовый вызов службы Spring с помощью пакета URL, чтобы я мог сделать это через POST, а не получить.

Код клиента (код, вызывающий службу Spring):

        String data = URLEncoder.encode("testStringFromGWT", "UTF-8") + "=" + URLEncoder.encode(message, "UTF-8");

        URL url = new URL("http://localhost:8080/spring-hibernate-mysql/test/test1");

        URLConnection conn = url.openConnection();

        conn.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
        wr.write(data);
        wr.flush();

        // Get the response
        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        while ((line = rd.readLine()) != null) {
            // Process line...
        }
        wr.close();
        rd.close();

Служба Spring:

@RequestMapping(value = "/test1", method = RequestMethod.POST)
public String loggedInUniversal_logout(
        Model model,
        HttpServletRequest request,
        @RequestParam(value = "inputString", required = true) String inputString)
        throws InterruptedException {

    HttpSession session = request.getSession();

    System.out.println("Request made from Client..." + inputString);

    model.addAttribute("token", "It works");
    return "token";
}

Когда я пытаюсь это сделать, я получаю:

java.io.FileNotFoundException: http://localhost:8080/spring-hibernate-mysql/test/test1
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1401)

Я не совсем уверен, что я делаю неправильно,Я могу подтвердить, что вызов правильно передается в Spring, так как я вижу, как печатается строка "Request made from Client..." + inputString, но затем я получаю исключение FileNotFoundException на клиенте.Я собрал это воедино, посмотрев учебники, так что, думаю, я что-то здесь упустил, был бы признателен за любой совет.

1 Ответ

1 голос
/ 13 мая 2011

Закройте поток вывода перед попыткой чтения из потока ввода в приведенном выше примере.

В качестве альтернативы используйте клиентскую библиотеку http, например HTTPClient или Resty .

С Resty ваш клиентский код будет выглядеть так:

Resty r = new Resty();
String result = r.text(url).toString();

для получения а для POST используется простая форма:

r.text(url,form(yourformdata)).toString();

Отказ от ответственности: я автор Resty

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...