使用Netbeans的REST Web服务的Java客户端

时间:2016-10-13 14:38:29

标签: java web-services rest netbeans soapui

我正在尝试为这样定义的REST Web服务编写Java客户端:

@Path("/")
public class Translator {
  public Translator() { }

  @POST
  @Produces("application/json")
  @Path("/translate")
  public String translate(@QueryParam("dir") String dir,  @QueryParam("string")String string, @QueryParam("user")String user, @QueryParam("key")String key){
    return doTranslation(dir, string, user, key);
  }
}

我尝试使用NetBeans选项“New Restful Java client”,为REST源选择包含webservice的项目。

但它生成一个类,其中一个方法没有参数:

public class NewJerseyClient {
  private WebTarget webTarget;
  private Client client;
  private static final String BASE_URI = "http://localhost:8086/TranslatorREST/Translator";

  public NewJerseyClient() {
    client = javax.ws.rs.client.ClientBuilder.newClient();
    webTarget = client.target(BASE_URI);
  }

  public String translate() throws ClientErrorException {
    return webTarget.path("translate").request().post(null, String.class);
  }
}

所以我没有看到将参数传递给Web服务的方法。

我可以成功使用SoapUI中的这个Web服务,前提是我没有启用“Post QueryString”选项,在这种情况下,Web服务会收到所有参数的“null”。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以使用.queryParam():

添加参数
public class NewJerseyClient {
  private WebTarget webTarget;
  private Client client;
  private static final String BASE_URI = "http://localhost:8086/TranslatorREST/Translator";

  public NewJerseyClient() {
    client = javax.ws.rs.client.ClientBuilder.newClient();
    webTarget = client.target(BASE_URI);
  }

  public String translate() throws ClientErrorException {
    return webTarget.path("translate").queryParam("dir", "myDir")
        .queryParam("string", "myString")
        .queryParam("user", "myUser")
        .queryParam("key", "myKey").request().post(null, String.class);
  }
}