这是我的自定义类:
@XmlRootElement
class Request{
private String name;
private String age;
public Request(){
}
public Request(String name, String age) {
this.name = name;
this.age = age;
}
public String getName() {
return this.name;
}
}这是我的服务:
@PATH("/webapp/")
class RestService{
@POST
@Produces(MediaType.APPLICATION_XML)
@PATH("getNameFromRequest")
public String getNameFromRequest(@FormPara Request request) {
System.out.println(request.getName()) //Here request.getName() is null !!!
return request.getName();
}
}这就是我如何使用JAXRSClientFactory创建的客户端服务以编程方式进行restful调用
RestService service = JAXRSClientFactory.create("http://test:8080", RestService.class);
service.getNameFromRequest(new Request("Rachel","23"))但是,似乎根本没有将“瑞秋”传递到请求中。
如果我使用Web-browser来请求,名称将被设置为:
http://test:8080/webapp?name=Rachel
有人能帮我解释一下为什么我不能以编程方式进行restful调用吗?
发布于 2017-07-25 14:22:43
你的服务应该有@Consumes注解
像这样
@PATH("/webapp/")
class RestService{
@POST
@Consumens(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
@PATH("getNameFromRequest")
public String getNameFromRequest(JAXBElement<Request> request) {
System.out.println(request.getName()) ;
return request.getName();
}
}此服务的路径将为http://<hostname or ip adderss:8080 if default configuration >/<your app root folder name or root path>/webapp/getNameFromRequest
客户端代码将如下所示
Request request = new Request("Rachel","23");
webTarget.path("webapp/getNameFormRequest").post(new JAXBElement<Request>(new QName("Request"), Request.class, request));然后它就能工作了
https://stackoverflow.com/questions/45293560
复制相似问题