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

尝试使用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);

这也导致了相同的错误。 Any help is appreciated.

0
额外 编辑
意见: 1
你有一个堆栈跟踪/错误消息/任何东西?
额外 作者 Pavel Bucek,

2 答案

由于您的错误表明“服务器遇到内部错误”,因此您需要查看服务器(日志)以查看错误。当然你的第三个客户端看起来很好,可以达到你定义的服务(假设你使用的是真正的而不是字符串“baseURL”)。

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

0
额外
0
额外