302 Найденный документ перемещен Ошибка - PullRequest
0 голосов
/ 30 июня 2011

После прочтения различных постов из stackoverflow и некоторой помощи от других парней я выполнил аутентификацию в своем коде, а также пытался избежать перенаправления, которое происходило ранее, поскольку я новичок во всех этих вещах. Я начал получать ту же ошибку обратно 302 Найдено, документ перемещен.

Я пытаюсь выполнить локальный вызов ajax в другой домен со своего компьютера, написав некоторый прокси-код в jsp. И это мой jQuery AJAX-код, который вызывает страницу proxy.jsp.

    var search_agile_metadata = 'https://search.xyz.com/ag/se/ag/get?id=';

var on_show_info = function() {
                //alert("aa");
    var outOfDomainAjaxCall = search_agile + current_doc_info.id;//An XML document
    alert(outOfDomainAjaxCall);
                request_meta_info = $.ajax({
                url: "proxy.jsp?url=" + outOfDomainAjaxCall,
                type: 'GET',
                success: on_get_metadata,
                error: on_get_metadata_agile

        });

И мой файл proxy.jsp: -

    <%@ page language="java" import="org.apache.http.impl.client.AbstractHttpClient,
org.apache.http.client.methods.HttpUriRequest,
org.apache.http.client.methods.HttpGet,
org.apache.http.protocol.HttpContext,
org.apache.http.impl.client.DefaultHttpClient,
org.apache.http.HttpResponse
,org.apache.http.HttpRequest,
java.net.HttpURLConnection,
java.net.URL,
java.util.Collection,
org.apache.commons.httpclient.HttpClient,
org.w3c.dom.*,
javax.xml.parsers.DocumentBuilder,
javax.xml.parsers.DocumentBuilderFactory,
java.net.*,
java.io.*,
org.apache.http.protocol.BasicHttpContext,
org.apache.http.params.BasicHttpParams,
org.apache.http.params.HttpParams,
org.apache.http.Header,
org.apache.http.client.params.HttpClientParams"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>

<%
String a_Url = request.getParameter( "url" ) ;

URL url = new URL (a_Url);
String encoding = new String(
         org.apache.commons.codec.binary.Base64.encodeBase64   
            (org.apache.commons.codec.binary.StringUtils.getBytesUtf8("test:test"))
          );


HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setDoOutput(true);
connection.setFollowRedirects(false);
connection.setRequestProperty  ("Authorization", "Basic " + encoding);
InputStream content = (InputStream)connection.getInputStream();
BufferedReader in   = 
    new BufferedReader (new InputStreamReader (content));
String line;
while ((line = in.readLine()) != null) {
   out.println(line);
}

%>

<%
final HttpParams params = new BasicHttpParams();
HttpClientParams.setRedirecting(params, false);
%>

И когда я получаю ответ от сервера. Я получаю эту ошибку. Любая идея, почему я получаю эту ошибку обратно ..

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>302 Found</title>
</head><body>
<h1>Found</h1>
<p>The document has moved <a href="https://ln.xyz.com/site/n/13000/smscc?TYPE=16777217&amp;R">here</a>.</p>
<hr>
<address>Apache/2.0.58 (Unix) DAV/2 mod_jk/1.2.28 Server at search.xyz.com Port 80</address>
</body></html>

Любая помощь будет оценена ..

1 Ответ

3 голосов
/ 30 июня 2011

Это не ошибка. Это неофициальное сообщение. Запрос только что был перенаправлен. Это 3nn ответ. Только ответы HTTP 4nn и 5nn являются ошибками (4nn = ошибка клиента и 5nn = ошибка сервера)

Ваша конкретная проблема заключается в том, что вы сказали HttpURLConnection до , а не , следуйте перенаправлениям с помощью следующего параметра:

connection.setFollowRedirects(false);

Таким образом, вы видите неформальное сообщение, вместо того, чтобы автоматически перенаправляться на новый запрос. Скорее, вы должны были сказать ему следовать перенаправлениям:

connection.setFollowRedirects(true);

Не имеет отношения к проблеме : обратите внимание, что вы не используете API Apache HttpClient здесь. Вы просто используете стандартный API Java SE URLConnection для установления HTTP-соединения. Линия

HttpClientParams.setRedirecting(params, false);

не имеет никакого влияния на поведение URLConnection. Вы должны выбрать использовать один или другой. Стандартный URLConnection API или Apache HttpClient.

Также имейте в виду, что написание Java-кода в JSP-файле вместо Java-класса - плохая практика. Вам лучше использовать сервлет для этой работы.

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