我正在为宁静的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中的默认实体类型。

10-08 01:39