1

我创建了一个简单的 appengine 项目,该项目访问托管在http://commerce.qa.mycomp.com中的 restful web服务(mycomp 应该替换为我的实际公司名称)。

我正在使用 Jersey Client 来发出客户端请求。我向上述网址发出 POST 请求。当我在本地运行应用程序时,它总是返回 404 Not Found 响应。为了进行实验,我向http://www.bbc.co.uk/news/发出了一个 POST 请求,这工作正常,并返回 200 作为状态。

我刚刚将我的应用程序与 appengine 解耦并在单独配置的 tomcat 服务器中运行它,它工作正常并返回 200 状态代码。我认为 appengine 使用 Jetty 作为服务器。Jetty 是否存在处理 commerce.qa.mycomp.com 等 URL 的错误。为什么我问这是以 www.any.com 开头的网址似乎工作正常。

下面显示的两个代码片段在本地 appengine 中运行时不起作用(即使我将它托管到 apppot 也不运行)。

Client client = Client.create();
WebResource service = client.resource("http://commerce.qa.mycomp.com/rest");
ClientResponse response = service
    .header("Content-Type", "text/xml; Charset=utf-8")
.header("Authorization", "Basic dwt3hkl553lsfsfssf3")
.post(ClientResponse.class, "does not need to be actual xml");

URL url = new URL("http://commerce.qa.mycomp.com/rest");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "text/xml; Charset=utf-8");
conn.addRequestProperty("Authorization", "Basic dwt3hkl553lsfsfssf3");
OutputStream os = conn.getOutputStream();
os.write("no need to be actual xml".getBytes());
os.flush();
System.out.println("Response Code: " + conn.getResponseCode());

但是当用tomcat运行时,它就可以工作了。

我的安装是:Google App Engine Java SDK 1.6.1 Google Plugin for Eclipse 3.7 jersey-client-1.12、jersey-core-1.12、jersey-json-1.8

请分享想法。

4

0 回答 0