0

我正在使用 eclipse 编写一个 servlet,该 servlet 从客户端接收 POST 请求,该请求应该对接收到的文本进行一些拆分,访问 google geolocation api 以获取一些数据并显示给用户。

在本地主机上,这工作得很好。在实际服务器上(尝试使用 Openshift 和 CloudBees),这不起作用。我可以看到拆分回复,但看不到来自谷歌地理定位服务的回复。总是有一个错误从谷歌服务登录到控制台。但是,相同的代码在 localhost 上运行良好。

在 servlet的方法中收到 POST 请求后doPost,我正在执行以下操作来访问 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。如果有任何其他方法可以让这个工作,请告诉我

4

1 回答 1

0

您的本地主机将您的本地主机 IP 作为发送 IP。Openshift et al 将 Openshift et al IP 作为发送 IP。因此,Google API 说“我以前只见过两次 localhost IP,这很好!”,而它说“我以前见过这个 Openshift IP 数百万次!没有回复你!”

于 2013-07-09T23:26:11.430 回答