クライアントから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 の学習を控えようとしています。これを機能させる他の方法があれば教えてください