0
我想通過JSP編寫一些代理代碼,使我的電腦上Ajax調用本地其他域獲得URL的內容時,302找到錯誤。這是我調用proxy.jsp頁面的jQuery AJAX代碼。嘗試使用JSP
var search_agile_metadata = 'https://search.xyz.com/rest-services/services/ag/get?id=';
var on_show_info = function() {
var outOfDomainCall = search_agile_metadata + current_doc_info.id;//An XML document
request_meta_info = $.ajax({
url: "proxy.jsp?url=" + outOfDomainCall ,
type: 'GET',
success: on_get_metadata,
error: on_get_metadata_agile
});
};
var on_get_metadata = function(data, text_status, XMLHttpRequest) {
console.log(data);
}
任我proxy.jsp文件是: -
<%@ page language="java" import="org.w3c.dom.*,javax.xml.parsers.DocumentBuilder,javax.xml.parsers.DocumentBuilderFactory,java.net.*,java.io.*" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
final String login ="user";
final String password ="pass";
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication (login, password.toCharArray());
}
});
String a_Url = request.getParameter("url") ;
String l_Content = "" ;
if(a_Url!=null && a_Url.length()>0)
l_Content = GetContent(a_Url).toString() ;
out.println(l_Content);
%>
<%!
StringBuffer GetContent(String a_Url) throws Exception
{
URL l_URL = new URL(a_Url);
BufferedReader l_Reader = new BufferedReader(new InputStreamReader(l_URL.openStream()));
StringBuffer l_Result = new StringBuffer("") ;
String l_InputLine = null ;
while ((l_InputLine = l_Reader.readLine()) != null)
//System.out.println("Print3" +l_InputLine);
l_Result.append(l_InputLine);
l_Reader.close();
return(l_Result) ;
}
%>
,當我得到的迴應從這個proxy.jsp文件後,我得到這個錯誤: -
<!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="HTTP://search.xyz.com/rest-services/se/agile/get?id=CD90">here</a>.</p></body></html>
如果我在上面的jQuery AJAX代碼中檢查狀態代碼,那麼它是200.所以這意味着proxy.jsp頁面中發生了一些事情。爲什麼它無法獲取url的內容。任何建議將不勝感激...
@kasdega做
的代碼片段,感謝回答回來..我不知道在基本驗證哪些呢,這些管路機構的HttpClient:'client.getState() .setCredentials(新AuthScope( 「www.verisign.com」,443, 「境界」), 新UsernamePasswordCredentials( 「用戶名」, 「密碼」) );'喜歡什麼,我應該在的地方寫www.verisign.com而我寫的東西代替443,什麼是境界,你能不能幫我在這個.. – ferhan
HttpClient的API是非常有據可查的。我鼓勵您閱讀這些文檔。我不確定你想要用新的AuthScope來做什麼。在你的情況下,你可能會逃避使用靜態AuthScope.ANY。 – kasdega
@kasdega,謝謝你回覆。但仍然得到相同的錯誤。任何其他建議。 – ferhan