从SOAP UI调用时,rest服务获取正确的值。但是当从HttpClient调用时获取空值。
休息服务:
Capabilities
java Http客户端:
@Path("/example")
public class TestService {
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.TEXT_PLAIN)
public Response postXML(@QueryParam("target") String target,@QueryParam("body") String body) {
System.out.println("Target: " + target);
System.out.println("Message: " + body);
return Response.ok("Sucess").build();
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.TEXT_PLAIN)
public Response postJSON(@QueryParam("target") String target,@QueryParam("body") String body) {
System.out.println("Target: " + target);
System.out.println("Message: " + body);
return Response.ok("Sucess").build();
}
我尝试使用StringEntity和MultipartEntityBuilder。结果相同。
由于 马杜
答案 0 :(得分:0)
使用@QueryParam
时,参数必须是HTTP查询参数(即URL的一部分)。
但是您将数据作为HTTP请求有效负载发送,因此您会收到null
变量target
和body
。
答案 1 :(得分:0)
如果您希望能够发布此数据(如在httpclient情况下)而不是在查询字符串中传递它,那么您将在端点中使用@Consumes和未注释的参数:
@Consumes("application/x-www-form-urlencoded")
public String doPost2(FormURLEncodedProperties formData) {
在EE6教程中查找@Consumes:
https://docs.oracle.com/cd/E19798-01/821-1841/giepu/index.html