gpt4 book ai didi

java - 尝试使用jsp获取url内容时发现错误302

转载 作者:行者123 更新时间:2023-12-01 15:48:57 25 4
gpt4 key购买 nike

我试图通过在 jsp 中编写一些代理代码来从我的计算机本地对其他域进行 ajax 调用。这是我调用 proxy.jsp 页面的 jQuery AJAX 代码。

    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的内容。任何建议将不胜感激...

最佳答案

状态代码 302 表示您尝试从中提取信息的文件已移动。 302 是一个临时重定向,您可以在此处查看定义:HTTP status code definitions

您的 ajax 调用正常,但您的 JSP 代码不遵循 302 重定向。我不确定它是否能解决问题,但值得考虑使用 apache 的 HttpClient JSP 中的代码。

希望这有帮助。

我使用 HttpClient 所做的代码片段

httpclient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, AuthPolicy.BASIC);      
Credentials creds = new UsernamePasswordCredentials(proxyUsername, proxyPassword);

CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, creds);
httpclient.getCredentialsProvider().setCredentials(AuthScope.ANY, credsProvider.getCredentials(AuthScope.ANY));

关于java - 尝试使用jsp获取url内容时发现错误302,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com