【问题标题】:Web service parameter is nullWeb 服务参数为空
【发布时间】:2014-09-05 07:46:52
【问题描述】:

我遇到了一个奇怪的问题,即发送到我的 Web 服务的数据为空,即使该值存在于 http 请求中。这是ajax和rest:

    $("#updateProfileInfo").click(function(e){
    e.preventDefault();
    var jobb = $("#jobbEditBox").val();
    var bostad = $("#bostadEditBox").val();
    var intressen = $("#intresseEditBox").val();
    alert(jobb);
    alert(bostad);
    alert(intressen);
    $.ajax({
        type: "post",
        url: "http://localhost:8080/fakebook/fakebookrest/UserInfoService/json/edituserprofile",
        data: {
            "jobb" : jobb,
            "bostad" : bostad,
            "intressen" : intressen
        },
        success: function(data){
            var jsonData = $.parseJSON(data);
            alert(jsonData);
        }
    });
});



@POST
@Path("/json/edituserprofile")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public boolean produceJSON(
        @QueryParam("jobb") String rawJobText,
        @QueryParam("bostad") String rawCityText,
        @QueryParam("intressen") String rawIntresseText,
        @Context HttpServletRequest request)
{
    System.out.println(rawJobText);
    User user = (User) request.getSession().getAttribute("user");
    System.out.println(""+user.getId());
    if(user != null)
        return userFacade.editProfileInformation(user.getId(), rawJobText, rawCityText, rawIntresseText);
    else
        return false;
}

其他一切正常,没有错误。回调函数也被调用。唯一的问题是System.out.println(rawJobText); 的值为空。

【问题讨论】:

    标签: java rest


    【解决方案1】:

    你需要使用@FormParam 而不是@QueryParam

    【讨论】:

    • 您能解释一下为什么吗?好的,我现在看到了。 POST 方法仅适用于 formparam
    【解决方案2】:

    老实说,您可能不一定要使用@FormParam。您可以做的是转到防火墙并允许连接到 Web 服务所在的端口。通过允许端口,防火墙不再阻止对数据的访问。如果您确定您的网络服务是准确的,这将起作用。您可以使用 Postman 测试您的 Web 服务并查看它应该返回的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多