【发布时间】:2014-07-18 20:29:10
【问题描述】:
我有一个简单的谷歌应用引擎网站正在运行,它工作正常,网页正在浏览器中显示。
如果我使用 python 发送 GET 请求,它可以完美运行,但由于某种原因,当我使用 java 时它会给出 404 Response。我的java代码是:
public static void main(String args[]){
try {
URL u = new URL("http://localhost:8080/gendata/");
HttpURLConnection con = (HttpURLConnection) u.openConnection();
con.setRequestProperty("Content-Type", "text/plain");
con.setRequestMethod("GET");
if(con.getResponseCode() == HttpURLConnection.HTTP_OK){
System.out.println("Hola");
}else{
System.out.println(""+con.getResponseCode());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我的应用引擎获取方法:
class Writer(webapp2.RequestHandler):
def get(self):
self.response.write('''
<html>
<head><title>Hello</title>
</head>
<body>
<h1><center><b>This is test<br> FOO FOO
</b></center> </h1>
</body></html>
''')
刚开始学习Java我就想知道这个过程和python有什么不同吗?而且我也想知道有没有类似python中的requests库的Java库?
【问题讨论】:
-
Apache HttpComponents 库 (hc.apache.org) 是 Java 的标准。一旦你超越了基础,学习曲线可能会有点陡峭。在您运行 Java 的同一台机器上,
curl -v http://localhost:8080/gendata/的输出是什么? -
它给了我 404 错误和“在 DNS 缓存中找不到主机名”
-
主机名消息仅供参考。 404 提示 URL 无效,那么当你从 python 或浏览器调用它时它是如何工作的呢?您确定您使用的网址在所有情况下都相同吗?
-
好的,我明白了,问题是 Oracle 数据库和应用引擎都在同一个端口上运行。因此浏览器和 python 将访问应用程序引擎数据,而 curl 和 java 将访问数据库页面。我刚刚将端口从 8080 更改为 9080 并且工作正常。
标签: java python google-app-engine