Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey Response.seeOther()未提供HTTP 303状态代码_Java_Jersey - Fatal编程技术网

Java Jersey Response.seeOther()未提供HTTP 303状态代码

Java Jersey Response.seeOther()未提供HTTP 303状态代码,java,jersey,Java,Jersey,我有一个社交网站,我们有一个受限社区 当来宾用户申请成员资格时,将生成成员资格请求。我通过RESTAPI执行此任务 我在firefox中使用RESTClient插件来发送请求 当我发送一个将self添加到受限社区的POST-resquest时,响应是为该社区生成的memebership请求。因此,底层HTTP状态代码是303请参阅其他POST/GET 我得到了与会员请求相同的正确响应,但状态代码是200 OK(我认为这是会员请求的代码) 但是,我需要的是303。我也试过调试。我的发现是Jerse

我有一个社交网站,我们有一个受限社区

当来宾用户申请成员资格时,将生成成员资格请求。我通过RESTAPI执行此任务

我在firefox中使用RESTClient插件来发送请求

当我发送一个将self添加到受限社区的POST-resquest时,响应是为该社区生成的memebership请求。因此,底层HTTP状态代码是
303请参阅其他POST/GET

我得到了与会员请求相同的正确响应,但状态代码是
200 OK
(我认为这是会员请求的代码)

但是,我需要的是303。我也试过调试。我的发现是Jersey
响应。seeOther()
没有返回303

请帮忙

代码片段如下所示:

addUserToCommunity方法:

MembershipRequestModel membershipRequest = null;
membershipRequest = communityService.addUserToCommunity(communityId, userId);
if(membershipRequest != null) {
  // Add code 303 if returning membershiprequest
  return seeOther( membershipRequest, 
                   String.valueOf(membershipRequest.getId()), 
                   MembershipRequestRestHandlerImpl.class);
} else {
  return ok(null);
}

seeOther method which in turn calls Response.seeOther() :

public Response seeOther(Object model, String id, Class<?> resource){

  URI location = buildLocation(resource, id);

  return Response.seeOther(location).entity(createResponseItems(model)).build();
}
MembershipRequestModel membershipRequest=null;
membershipRequest=communityService.addUserToCommunity(communityId,userId);
if(membershipRequest!=null){
//如果返回成员资格请求,则添加代码303
返回请参见其他(会员资格申请,
String.valueOf(membershipRequest.getId()),
MembershipRequestRestHandlerImpl.class);
}否则{
返回ok(空);
}
请参见调用Response的其他方法。请参见其他()
公共响应请参见其他(对象模型、字符串id、类资源){
URI位置=构建位置(资源,id);
返回Response.seeOther(location).entity(createResponseItems(model)).build();
}

303-请参见“其他”本质上是一个重定向-浏览器将自动跟随位置标题中提供的URL。你确定这不是你看到的吗?也就是说,您使用的firefox插件可能只是在重定向之后(幕后)返回该位置URL上的GET方法的结果。请尝试FireBug,它会向您显示连接上的确切请求-您应该能够在那里看到重定向。

303-查看其他基本上是重定向-浏览器将自动跟随位置标题中提供的URL。你确定这不是你看到的吗?也就是说,您使用的firefox插件可能只是在重定向之后(幕后)返回该位置URL上的GET方法的结果。试一下FireBug,它会向您显示网络上的确切请求-您应该能够在那里看到重定向。

这实际上是RESTClient的一个问题,即;正如Martin所说的浏览器

浏览器实际上执行重定向,但没有给出303

相反,尝试在shell中使用cURL或puTTY来命中URI。它很好用


谢谢。

这实际上是RESTClient的一个问题,即;正如Martin所说的浏览器

浏览器实际上执行重定向,但没有给出303

相反,尝试在shell中使用cURL或puTTY来命中URI。它很好用


谢谢。

如果您想使用303而不是200响应:

httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, false);

如果您希望geht 303而不是200响应,则重定向URL位于Location:header

httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, false);

重定向URL位于位置:header

是否可以至少附加POST方法的签名以及如何形成响应。嘿,Alex,我已将代码片段添加到原始问题中。是否可以至少附加POST方法的签名以及如何形成响应。嘿,Alex,我已将代码片段添加到原始问题中。这是正确的行为。所有20倍的响应都表示OK,204是在结果OK时专门使用的,但没有实体通过线路发送-这正是您的情况。为什么这对你来说是个问题?这是正确的行为。所有20倍的响应都表示OK,204是在结果OK时专门使用的,但没有实体通过线路发送-这正是您的情况。为什么这对你来说是个问题?