0

クライアントからPOSTリクエストを受け取り、受信したテキストを分割し、Google地理位置情報APIにアクセスしてデータを取得し、ユーザーに表示するEclipseを使用してサーブレットを作成しています。

ローカルホストでは、これは完全に正常に機能します。実際のサーバー (Openshift と CloudBees で試した) では、これは機能しません。分割応答は表示されますが、Google ジオロケーション サービスからの応答は表示されません。Google サービスからコンソールにログインすると、常にエラーが発生します。ただし、同じコードが localhost で問題なく動作します。

サーブレットのメソッドで 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 は、送信 IP として Openshift et al IP を持っています。そのため、Google API は「その localhost の IP は以前に 2 回しか見たことがありませんが、それで問題ありません!」と表示しますが、「この Openshift の IP は何百万回も前に見たことがあります! NO REPLY FOR YOU!」と表示します。

于 2013-07-09T23:26:11.430 に答える