我正在使用eclipse编写一个servlet,它接收来自客户端的POST请求,该客户端应该对收到的文本进行一些拆分,访问google geolocation api以获取一些数据并显示给用户。
在本地主机上,这非常好用。在实际的服务器上(尝试使用Openshift和CloudBees),这不起作用。我可以看到分裂回复,但不是谷歌地理定位服务的回复。从谷歌服务登录控制台始终存在错误。但是,相同的代码在localhost上完全正常。
在servlet的doPost
方法中收到POST请求后,我正在执行以下操作来访问Google GeoLocation服务:
//Attempting to send data to Google Geolocation Service
URL url;
HttpURLConnection connection = null;
try {
//Create connection
url = new URL("https://www.googleapis.com/geolocation/v1/geolocate?key=MyAPI");
connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setUseCaches (false);
connection.setDoInput(true);
connection.setDoOutput(true);
//Send request with data (output variable has the JSON data)
DataOutputStream wr = new DataOutputStream (
connection.getOutputStream ());
wr.writeBytes (output);
wr.flush ();
wr.close ();
//Get Response
InputStream is = connection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response2 = new StringBuffer();
while((line = rd.readLine()) != null) {
response2.append(line);
response2.append('\r');
}
rd.close();
//Write to Screen using out=response.getWriter();
out.println("Access Point's Location = " + response2.toString());
} catch (Exception e) {
e.printStackTrace();
} finally {
if(connection != null) {
connection.disconnect();
}
你能告诉我为什么会这样吗?我怎样才能做到这一点?我应该采用像AJAX这样的东西还是有其他的解决方法?我对编码比较陌生,所以在这个阶段试图避免学习AJAX。如果还有其他办法让这个工作,请告诉我
答案 0 :(得分:0)
您的localhost将您的localhost IP作为发送IP。 Openshift等人将Openshift等IP作为发送IP。所以Google API说“我之前只看过两次本地主机IP,那很好!”,而它说“我之前已经看过这个Openshift IP数百万次了!没有回复你!”