Jersey Response.seeOther () не дает код состояния HTTP 303 - PullRequest
1 голос
/ 28 марта 2012

У меня есть сайт социальной сети, в котором у нас ограниченное сообщество.

Когда гостевой пользователь применяет запросы на членство, генерируется запрос на членство. Я выполняю эту задачу через REST API.

Я использую плагин RESTClient в Firefox для отправки запросов.

Когда я отправляю запрос POST для добавления себя в сообщество с ограниченным доступом, ответом является запрос на членство, созданный для него. Следовательно, основной код состояния 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();
}

Ответы [ 3 ]

1 голос
/ 13 апреля 2016

Если вы хотите получить 303 вместо ответа 200:

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

URL перенаправления находится в расположении: заголовок

0 голосов
/ 30 марта 2012

Это на самом деле проблема с RESTClient т.е.браузер, как говорит Мартин.

Браузер фактически выполняет перенаправление и не дает 303.

Вместо этого попробуйте нажать URI, используя cURL в оболочке или puTTY.Работает нормально.

Спасибо.

0 голосов
/ 29 марта 2012

303 - См. «Другое» - это, по сути, перенаправление - браузер будет автоматически следовать URL-адресу, указанному в заголовке местоположения. Вы уверены, что это не то, что вы видите? То есть может быть, используемый вами плагин firefox просто следует за редиректом (за кулисами) и возвращает результат метода GET по этому URL-адресу местоположения. Попробуйте FireBug, который показывает вам точные запросы, которые были переданы по сети - вы сможете увидеть перенаправление там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...