使用Jersey Client POST方法调用RESTful Web服务时出错

时间:2012-05-24 07:10:17

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

  

尝试使用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 Client进行访问。请在下面找到我尝试过的代码。 我尝试向FormParam添加值,如下所示。

Trail 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);

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

2 个答案:

答案 0 :(得分:1)

由于您的错误指示“服务器遇到内部错误”,您需要查看服务器(日志)以查看出现了什么问题。当然,您的第三个客户端看起来很好,可以达到您定义的服务(假设您使用的是真实的而不是字符串“baseURL”)。

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

答案 1 :(得分:0)