【问题标题】:Error while calling RESTful Web-Service using Jersey Client POST method使用 Jersey 客户端 POST 方法调用 RESTful Web 服务时出错
【发布时间】:2012-05-24 07:10:17
【问题描述】:

尝试使用 Restful Web 服务时出错 POST 方法(带表单参数)。

我想使用 POST 方法使用 REST 应用程序。 请在下面找到我要访问的资源类。

@Path("/user")

公共类用户{

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public Response get(@FormParam("username") String userName,
        @FormParam("userid") String userId  ){

}

我尝试使用 Jesry 客户端进行访问。请在下面找到我尝试的代码。 我尝试向 FormParam 添加值,如下所示。

步道 1

WebResource webResource = client.resource("baseURL/user");

String input = "userid:1001,username:demo1";
ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, input);

我收到一个错误响应“服务器遇到内部错误 () 阻止它完成此请求”。 我认为我没有正确地将值添加到 FormParam。

试用 2

我还尝试使用以下代码添加表单参数

MultivaluedMap formData = new MultivaluedMapImpl();
    formData.add("userid", "1001");
    formData.add("username", "demo1");
    ClientResponse response = webResource.type("application/x-www-form-urlencoded").post(ClientResponse.class, formData);

这也导致了同样的错误。

试用 3

Form f = new Form();
    f.add("userid", "1001D");
    f.add("username", "1001D");

    ClientResponse response = webResource.type(MediaType.APPLICATION_FORM_URLENCODED_TYPE).post(ClientResponse.class, f);

这也导致了同样的错误。 任何帮助表示赞赏。

【问题讨论】:

  • 你有堆栈跟踪/错误消息/任何东西吗?

标签: java web-services jersey http-post restful-url


【解决方案1】:

由于您的错误表明“服务器遇到内部错误”,您需要查看服务器(日志)以了解问题所在。当然,您的第三个客户端看起来可以很好地访问您定义的服务(假设您使用的是真实的东西而不是字符串“baseURL”)。

您可以通过创建一个 HTML 页面来访问该服务,从而轻松地测试您的服务器是否与您的客户端分开工作。使用 enctype="application/x-www-form-urlencoded" 创建一个 HTML 表单,并使用表单参数 userid 和 username 发布到您的服务端点(您称之为“baseURL/user”)。当您在浏览器中查看 HTML 表单并点击提交按钮时,它将调用您的服务器 - 如果您遇到相同的错误,您可以确定它与您的客户端代码无关。

【讨论】:

    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2011-03-26
    • 2012-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多