我正在为宁静的Web服务制作Java客户端,并且我想在请求正文中发送字符串。
这是我的课。
public class params {
private String test;
public String getTest() {
return test;
}
public void setTest(String test) {
this.test = test;
}
这是我的主要功能课。
public class testclient implements MessageBodyReader<params> {
public static void main(String[] args) {
ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(getBaseURI());
params pobj = new params();
pobj.setTest("myname");
System.out.println(service.path("interface").post(params.class);
}
private static URI getBaseURI() {
return UriBuilder.fromUri("http://localhost:8080/ivrservices").build();
}
public boolean isReadable(Class<?> params, Type genericType, Annotation[] arg2,
MediaType arg3) {
return false;
}
public params readFrom(Class<params> arg0, Type arg1,
Annotation[] arg2, MediaType arg3,
MultivaluedMap<String, String> arg4, InputStream arg5)
throws IOException, WebApplicationException {
// TODO Auto-generated method stub
return null;
}
}
我要在默认函数中传递什么参数?
最佳答案
看来您完全误读了MessageBodyReader用法。它应由提供者而不是客户端来实现。对于您的情况,不需要自定义提供程序。例如,您可以使用具有POJO功能的Jackson Json提供程序来发送/接收参数。
因此,您的客户端配置将是: ClientConfig cc = new ClientConfig().register(JacksonFeature.class)
这会将参数序列化为Json。
不要忘记在服务器上注册JacksonFeature以及反序列化请求。
如果只想发送测试字符串,则不需要将其包装。字符串是Jersey中的默认实体类型。