1

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

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

@Path("/user")

公共类用户{

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

}

我尝试使用 Jesry Client 进行访问。请在下面找到我尝试过的代码。我尝试向 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);

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

4

2 回答 2

1

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

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

于 2012-05-25T03:26:51.680 回答
0

希望http://yogeshmprajapati.blogspot.in/2011/12/login-to-fb-from-java.html对您有所帮助。

于 2012-06-01T12:35:04.510 回答