Используя 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();
}
}
}
Пример выглядит очень похоже на ряд других просмотренных примеров. Что-то явно не так, что мешает отправить объект?