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

标签 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 选项“新的 Restful Java 客户端”,选择包含 Web 服务的项目作为 REST 源。

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

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 服务的方法。

只要我不启用选项“Post QueryString”,我就可以从 SoapUI 成功使用此 Web 服务,在这种情况下,Web 服务会收到所有参数的“null”。

提前致谢。

最佳答案

您可以使用 .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);
  }
}

关于使用 Netbeans 的 REST Web 服务的 Java 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40024068/

相关文章:

c# - 策略模式还是命令模式?

java - 离线同步 Android 应用的通用架构

java - Spring Boot REST 服务异常处理

spring - Controller 的 ModelAndView 或 ResponseEntity 返回类型?

spring - 在 Spring Boot Data Rest 中向 HATEOAS 响应添加更多信息

java - 如何在 Eclipse (Juno) 中的 Glassfish 4.0 上运行 JMS 应用程序

web-services - 无法使用 glassfish 服务器在 net bean 7.1 中访问 Web 服务测试器页面

java - 当服务器出现时间延迟时,如何避免 Android 中的 ANR 响应?

c# - Silverlight 启用的 WCF 服务与 Web 服务与 ADO.NET 数据服务

java - 如何将 Maven 项目打包成包含 jar 文件的 zip 文件