来自Servlet的POST请求

时间:2013-07-09 22:55:56

标签: java ajax eclipse servlets openshift

我正在使用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。如果还有其他办法让这个工作,请告诉我

1 个答案:

答案 0 :(得分:0)

您的localhost将您的localhost IP作为发送IP。 Openshift等人将Openshift等IP作为发送IP。所以Google API说“我之前只看过两次本地主机IP,那很好!”,而它说“我之前已经看过这个Openshift IP数百万次了!没有回复你!”