2011-06-30 5 views
0

stackoverflowからさまざまな投稿を読んで、他の人の助けを借りて、私は自分のコードで認証を行いました。私は302の同じエラーが戻ってきたことを発見しました。文書が移動しました。302 Found Document Has Movedエラー

jspにプロキシコードを書くことで、自分のコンピュータからローカルに他のドメインにajaxを呼び出そうとしています。これが私の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> 

私は戻って、このエラーを取得していますなぜすべてのアイデア..

答えて

3

。これは非公式のメッセージです。リクエストはリダイレクトされました。これは3nn応答です。

connection.setFollowRedirects(false); 
:のみHTTP 4NNと5NN応答がエラー(4NN =クライアントのエラーと5NN =サーバエラー)です

あなたの具体的な問題は、あなたがHttpURLConnectionないのフォローは、以下の設定でリダイレクト言ったということです

新しいリクエストに自動的にリダイレクトされるのではなく、非公式のメッセージが表示されます。あなたは、むしろリダイレクトを追跡するためにそれを告げておく必要があります。問題へ

connection.setFollowRedirects(true); 

無関係:あなたは完全にここではApacheのHttpClient APIを利用されていないことに注意してください。標準Java SE URLConnection APIを使用してHTTP接続を作成しています。行

HttpClientParams.setRedirecting(params, false); 

は、URLConnectionの動作にまったく影響しません。どちらか一方を使用するかを選択する必要があります。標準URLConnection API または Apache HttpClient。

また、JavaクラスではなくJSPファイルにJavaコードを記述することは賢明ではありません。このジョブにはサーブレットを使用してください。

関連する問題