Java объект не отправляется через HttpURLConnection - PullRequest
0 голосов
/ 27 января 2020

Используя RESTless Service и может возвращать жестко закодированную строку «Hello World», но расширил пример до POST объекта и распечатывает информацию с объекта на сервере и возвращает ее клиенту.

На стороне сервера выводится: Made it to the server side for user null Ноль указывает, что объект никогда не проходил через него.

Возвращает Info received from null, и нулевое значение является ожидаемым, поскольку нулевое значение было получено изначально

@RestController         
public class WelcomeController 
{
    @RequestMapping("/hello")
    public String login(MyObject obj1) 
    {
        System.out.println("Made it to the server side for user " + obj1.getName());
        return new String("Info received from " + obj1.getName()) ; 
    }

}

Вот простой объект, отправляемый на сервер.

class MyObject implements java.io.Serializable 
{
    private static final long serialVersionUID = 1L;
    String name;
    public MyObject() {}
    public MyObject(String name) {this.name = name; }
    String getName() {return name;}
}

Это код клиента.

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

 public class RestfulClientTest {

public static void main(String[] args) 
{
    postObject();
}

private static void postObject() 
{


      try {

        URL url = new URL("http://localhost:8083/hello");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
 //         if (conn.getResponseCode() != 200) {
 //             throw new RuntimeException("Failed : HTTP error code : "
 //                     + conn.getResponseCode());
 //         }

        MyObject uLoginInfo = new MyObject("John Doe");

        ObjectOutputStream out = new ObjectOutputStream(conn.getOutputStream());
        out.writeObject(uLoginInfo);
        out.close();

        BufferedReader br = new BufferedReader(new InputStreamReader((conn.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }
        conn.disconnect();
      } catch (MalformedURLException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
}   
}

Пример выглядит очень похоже на ряд других просмотренных примеров. Что-то явно не так, что мешает отправить объект?

...