我有一个社交网站,我们有一个受限制的社区。 p>
当访客用户申请会员资格时,会生成会员资格请求。我正在通过REST API执行此任务。
我在firefox中使用 RESTClient插件来发送请求。
当我发送POST resquest以向受限制社区添加self时,响应是为此生成的成员请求。因此,基础HTTP状态代码为303 See Other POST/GET
。
我对响应中的成员资格请求得到了相应的响应,但状态代码为200 OK
(我认为是成员请求中GET的代码)。
但是,我需要同样的303.我已经尝试调试。我的发现是泽西岛Response.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();
}
答案 0 :(得分:1)
如果你想要303而不是200响应:
httpClient.getParams().setParameter(ClientPNames.HANDLE_REDIRECTS, false);
位置:标题
中的重定向网址答案 1 :(得分:0)
303 - See Other本质上是一个重定向 - 浏览器会自动跟踪位置标题中提供的URL。你确定这不是你看到的吗?即也许您正在使用的firefox插件只是遵循重定向(幕后)并在该位置URL上返回GET方法的结果。尝试使用FireBug,它会向您显示确切的请求 - 您应该可以在那里看到重定向。
答案 2 :(得分:0)
这实际上是RESTClient的一个问题,即;像马丁所说的浏览器。
浏览器实际执行重定向但不提供303。
而是尝试使用shell中的cURL或使用puTTY来访问URI。它工作正常。
谢谢。