发送 JSON Post 请求到 Java 中的 Rest Web 服务
Sending JSON Post Request to Rest Web Service in Java
我正在尝试向 JSON 字符串中的虚拟 Rest Web 服务发送一个值。但是,该服务无法获取我发送的值。
首先,我的 JAX-RS 代码是这样的:
@POST
@Path("/ser1")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response convertFtoCfromInput(final BasicModel bm) throws JSONException {
System.out.println("Value is " + bm.value);
JSONObject jsonObject = new JSONObject();
float celsius;
celsius = (bm.value - 32) * 5 / 9;
jsonObject.put("F Value", bm.value);
jsonObject.put("C Value", celsius);
String result = "@Produces(\"application/json\") Output: \n\nF to C Converter Output: \n\n" + jsonObject;
return Response.status(200).entity(result).build();
}
其中 BasicModel class 是:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class BasicModel {
@XmlElement float value;
}
我正在使用 Postman 向“.../ftocservice/ser1”发送一个 POST 请求,我的请求正文是:
{"value": 900.0}
当我发送请求时,服务无法获取值 900.0。它打印 "Value is 0.0" 和 returns: {"C Value": -17.77777862548828, "F Value": 0}
我哪里做错了?感谢您的帮助。
资源:
我解决了这个问题!
我从值中删除了 "XmlElement" 标记并将其设为私有。我为它创建了 getter 和 setter,它起作用了。
所以,BasicModel的最终代码是:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class BasicModel {
private float value;
public float getValue(){
return value;
}
public float setValue(float value){
this.value = value;
}
}
我正在尝试向 JSON 字符串中的虚拟 Rest Web 服务发送一个值。但是,该服务无法获取我发送的值。
首先,我的 JAX-RS 代码是这样的:
@POST
@Path("/ser1")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Response convertFtoCfromInput(final BasicModel bm) throws JSONException {
System.out.println("Value is " + bm.value);
JSONObject jsonObject = new JSONObject();
float celsius;
celsius = (bm.value - 32) * 5 / 9;
jsonObject.put("F Value", bm.value);
jsonObject.put("C Value", celsius);
String result = "@Produces(\"application/json\") Output: \n\nF to C Converter Output: \n\n" + jsonObject;
return Response.status(200).entity(result).build();
}
其中 BasicModel class 是:
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class BasicModel {
@XmlElement float value;
}
我正在使用 Postman 向“.../ftocservice/ser1”发送一个 POST 请求,我的请求正文是:
{"value": 900.0}
当我发送请求时,服务无法获取值 900.0。它打印 "Value is 0.0" 和 returns: {"C Value": -17.77777862548828, "F Value": 0}
我哪里做错了?感谢您的帮助。
资源:
我解决了这个问题!
我从值中删除了 "XmlElement" 标记并将其设为私有。我为它创建了 getter 和 setter,它起作用了。
所以,BasicModel的最终代码是:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class BasicModel {
private float value;
public float getValue(){
return value;
}
public float setValue(float value){
this.value = value;
}
}