我正在运行一个java代码,用于从google-app-engine网络服务(testeserjaum.appspot.com)获取信息,但它始终在第一个System.out.println和{{上打印{null=[HTTP/1.1 302 Found], Date=[Wed, 26 Oct 2011 21:02:46 GMT], Content-Length=[0], Location=[https://testeserjaum.appspot.com/], Content-Type=[text/html], Server=[Google Frontend]}
1}}在第二个。
有趣的事实是,使用其他google-app-engine网络服务,代码运行完美(我尝试使用testegelfur.appspot.com并且有效)。
以下是代码:
null
并且,我不知道它是否有帮助,但这是一个实际上有效的python等价物。我不能使用它因为我打算在Android应用程序上使用这个软件,而且我已经完成了大量的软件,所以这必须在java中完成。
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class URLConnectionReader {
public static void main(String[] args) throws MalformedURLException, IOException{
URL url = new URL("http://testeserjaum.appspot.com/");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
System.out.println(urlConnection.getHeaderFields());
try {
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader buff = new BufferedReader(new InputStreamReader(in));
System.out.println(buff.readLine());
}finally{
urlConnection.disconnect();
}
}
}
答案 0 :(得分:5)
HTTP 302是重定向,而不是错误。这就是为什么它被称为 Found 。
具体来说,它告诉客户提取https://testeserjaum.appspot.com/
而不是http://testeserjaum.appspot.com/
。
如果您不想处理重定向,只需直接访问https://testeserjaum.appspot.com/
。
答案 1 :(得分:2)
这不是错误。这是一个临时重定向,您可以遵循。有些图书馆总是为您重定向;有些人从来没有。其他人留给你。如果库没有,您可以在用户代码中执行此操作。
但是,Java为此目的提供了方便的setFollowRedirects
。