java - java与google-app-engine通信时报错302

标签 java android http google-app-engine

我正在运行一个 java 代码,用于从 google-app-engine 网络服务 (testeserjaum.appspot.com) 获取信息,但它总是打印 {null=[HTTP/1.1 302 Found], Date= [2011 年 10 月 26 日星期三 21:02:46 GMT],Content-Length=[0],Location=[https://testeserjaum.appspot.com/],Content-Type=[text/html],Server=[ Google Frontend]} 在第一个 System.out.println 和 null 在第二个。

有趣的是,对于其他 google-app-engine 网络服务,该代码可以完美运行(我尝试使用 testegelfur.appspot.com,它运行良好)。

代码如下:

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();
           }

    }
}

而且,我不知道它是否有帮助,但这里有一个实际可用的 python 等效项。我不能使用它,因为我打算在 android 应用程序上使用这个软件,而且我已经完成了大量的软件,所以这必须在 java 中完成。

import urllib2
import base64

req = urllib2.Request('http://testeserjaum.appspot.com/')
req.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')
#base64string = base64.encodestring('%s:%s' %('user', 'pass'))
#print base64string
#req.add_header("Authorization", "Basic %s" %base64string)
lol = urllib2.urlopen(req)
print lol.read()

最佳答案

HTTP 302 是重定向,不是错误。这就是它被称为Found 的原因。

具体来说,它告诉客户端获取 https://testeserjaum.appspot.com/ 而不是 http://testeserjaum.appspot.com/

如果您不想处理重定向,只需直接访问 https://testeserjaum.appspot.com/

关于java - java与google-app-engine通信时报错302,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7909236/

相关文章:

java - 如何将 JAXB 对象编码到 org.w3c.dom.Document?

android - 如何以编程方式转到Android的默认主屏幕?

java - AdMob 横幅 : Not enough space to show ad

python - 请求.exceptions.SSLError : [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

http - 如何将https更改为http

java - WebDriver FireFoxProfile UserAgent 与 FireFoxDriver 切换

java - 如何停止线程?

java - 使用 Content Provider 从多个表中获取数据

Android/C++ - 命令 ""\bin\ant.bat"以代码 3 退出

node.js - Firebase 云功能与批量更新不一致