Tuesday, February 14, 2012

Java Practice: java.net practice, Use Google Geocode Web Service

Just simple log:

Assume we have the java application below:

package test;

import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

public class GeocodeService {
    public static void main (String args[]) {
        String result = null;
        try {
            System.out.println("First request\n\n");
            // request service by Lat, Lng
            StringBuilder sb = getResponse("http://maps.googleapis.com/maps/api/geocode/json?latlng=40.70594140,-74.0088760&sensor=true&language=ja");
            result = sb.toString();
            System.out.println(result+"\n");
            System.out.println("Second request\n\n");
            sb.setLength(0);
            // request service by address
            sb = getResponse("http://maps.googleapis.com/maps/api/geocode/json?address="
                    +java.net.URLEncoder.encode("59 ウォール街 マンハッタン ニューヨーク 10005 アメリカ合衆国", "UTF-8")+"&sensor=true&language=en");
            result = sb.toString();
            System.out.println(result);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }
    public static StringBuilder getResponse(String path){
        try {
            System.out.println(path);
            java.net.URL url = new java.net.URL(path);
            java.net.HttpURLConnection uc = (java.net.HttpURLConnection) url.openConnection();
            uc.setRequestProperty("User-agent", "Mozilla/5.0");

            uc.setRequestProperty("Accept-Charset", "UTF-8"); // encoding
            uc.setReadTimeout(30000);// timeout limit
            uc.connect();// connect
            int status = uc.getResponseCode();

            switch (status) {
                case java.net.HttpURLConnection.HTTP_GATEWAY_TIMEOUT://504 timeout
                    break;
                case java.net.HttpURLConnection.HTTP_FORBIDDEN://403 forbidden
                    break;
                case java.net.HttpURLConnection.HTTP_INTERNAL_ERROR://500 server error
                    break;
                case java.net.HttpURLConnection.HTTP_NOT_FOUND://404 not exist
                    break;
                case java.net.HttpURLConnection.HTTP_OK: // ok
                    InputStreamReader reader = new InputStreamReader(uc.getInputStream(), "UTF-8");

                    int ch;
                    StringBuilder sb = new StringBuilder("");
                    while((ch = reader.read())!= -1){
                        sb.append((char)ch);
                    }
                    return sb;
            }

        } catch (java.net.MalformedURLException e) { // invalid address format
            e.printStackTrace();
        } catch (java.io.IOException e) { // connection broken
            e.printStackTrace();
        }
        return null;
    }
}

The result will be:

First request


http://maps.googleapis.com/maps/api/geocode/json?latlng=40.70594140,-74.0088760&sensor=true&language=ja
{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "2",
               "short_name" : "2",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "ハノーバー・ストリート",
               "short_name" : "ハノーバー・ストリート",
               "types" : [ "route" ]
            },
            {
               "long_name" : "ダウンタウン",
               "short_name" : "ダウンタウン",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "マンハッタン",
               "short_name" : "マンハッタン",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "10005",
               "short_name" : "10005",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "2 ハノーバー・ストリート マンハッタン ニューヨーク 10005 アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.70595330,
                  "lng" : -74.00886570
               },
               "southwest" : {
                  "lat" : 40.70549480,
                  "lng" : -74.00910170
               }
            },
            "location" : {
               "lat" : 40.70594550,
               "lng" : -74.00888990
            },
            "location_type" : "RANGE_INTERPOLATED",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.70707303029150,
                  "lng" : -74.00763471970851
               },
               "southwest" : {
                  "lat" : 40.70437506970850,
                  "lng" : -74.01033268029151
               }
            }
         },
         "types" : [ "street_address" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "Wall St",
               "short_name" : "Wall St",
               "types" : [ "subway_station", "establishment", "transit_station" ]
            },
            {
               "long_name" : "ダウンタウン",
               "short_name" : "ダウンタウン",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "マンハッタン",
               "short_name" : "マンハッタン",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "10005",
               "short_name" : "10005",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "Wall St, ニューヨーク 10005 アメリカ合衆国",
         "geometry" : {
            "location" : {
               "lat" : 40.7068210,
               "lng" : -74.00910
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.70816998029150,
                  "lng" : -74.00775101970849
               },
               "southwest" : {
                  "lat" : 40.70547201970850,
                  "lng" : -74.01044898029151
               }
            }
         },
         "types" : [ "subway_station", "establishment", "transit_station" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "10265",
               "short_name" : "10265",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "ダウンタウン",
               "short_name" : "ダウンタウン",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "マンハッタン",
               "short_name" : "マンハッタン",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "マンハッタン ニューヨーク 10265 アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.70839880,
                  "lng" : -74.00650899999999
               },
               "southwest" : {
                  "lat" : 40.70530210,
                  "lng" : -74.01091610
               }
            },
            "location" : {
               "lat" : 40.70556480,
               "lng" : -74.0081070
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.70839880,
                  "lng" : -74.00650899999999
               },
               "southwest" : {
                  "lat" : 40.70530210,
                  "lng" : -74.01091610
               }
            }
         },
         "types" : [ "postal_code" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "10005",
               "short_name" : "10005",
               "types" : [ "postal_code" ]
            },
            {
               "long_name" : "ウォール・ストリート",
               "short_name" : "ウォール・ストリート",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "マンハッタン",
               "short_name" : "マンハッタン",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "WALL STREET",
               "short_name" : "WALL STREET",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "WALL STREET ニューヨーク 10005 アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.7091540,
                  "lng" : -73.99918690
               },
               "southwest" : {
                  "lat" : 40.6949950,
                  "lng" : -74.0135830
               }
            },
            "location" : {
               "lat" : 40.69984330,
               "lng" : -74.00724360
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.7091540,
                  "lng" : -73.99918690
               },
               "southwest" : {
                  "lat" : 40.6949950,
                  "lng" : -74.0135830
               }
            }
         },
         "types" : [ "postal_code" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "ダウンタウン",
               "short_name" : "ダウンタウン",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "マンハッタン",
               "short_name" : "マンハッタン",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "ダウンタウン ニューヨーク アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.74252620,
                  "lng" : -73.97164459999999
               },
               "southwest" : {
                  "lat" : 40.70046310,
                  "lng" : -74.01933500000001
               }
            },
            "location" : {
               "lat" : 40.72300840,
               "lng" : -74.00063279999999
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.74252620,
                  "lng" : -73.97164459999999
               },
               "southwest" : {
                  "lat" : 40.70046310,
                  "lng" : -74.01933500000001
               }
            }
         },
         "types" : [ "neighborhood", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "マンハッタン",
               "short_name" : "マンハッタン",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "マンハッタン ニューヨーク アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.8822140,
                  "lng" : -73.9070
               },
               "southwest" : {
                  "lat" : 40.67954790,
                  "lng" : -74.0472850
               }
            },
            "location" : {
               "lat" : 40.78343450,
               "lng" : -73.96624950
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.8200450,
                  "lng" : -73.90331300000001
               },
               "southwest" : {
                  "lat" : 40.6980780,
                  "lng" : -74.03514899999999
               }
            }
         },
         "types" : [ "sublocality", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "ニューヨーク アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.8822140,
                  "lng" : -73.9070
               },
               "southwest" : {
                  "lat" : 40.67954790,
                  "lng" : -74.0472850
               }
            },
            "location" : {
               "lat" : 40.78306030,
               "lng" : -73.97124880
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.8822140,
                  "lng" : -73.9070
               },
               "southwest" : {
                  "lat" : 40.67954790,
                  "lng" : -74.0472850
               }
            }
         },
         "types" : [ "administrative_area_level_2", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "ニューヨーク",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "ニューヨーク アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.9175770,
                  "lng" : -73.7002720
               },
               "southwest" : {
                  "lat" : 40.4959080,
                  "lng" : -74.25908790
               }
            },
            "location" : {
               "lat" : 40.71435280,
               "lng" : -74.00597309999999
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.9175770,
                  "lng" : -73.7002720
               },
               "southwest" : {
                  "lat" : 40.4959080,
                  "lng" : -74.25908790
               }
            }
         },
         "types" : [ "locality", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "ニューヨーク",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "ニューヨーク アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 45.0158650,
                  "lng" : -71.85626990
               },
               "southwest" : {
                  "lat" : 40.49594540,
                  "lng" : -79.76214390
               }
            },
            "location" : {
               "lat" : 43.29942850,
               "lng" : -74.21793260000001
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 45.0158650,
                  "lng" : -71.85626990
               },
               "southwest" : {
                  "lat" : 40.49594540,
                  "lng" : -79.76214390
               }
            }
         },
         "types" : [ "administrative_area_level_1", "political" ]
      },
      {
         "address_components" : [
            {
               "long_name" : "アメリカ合衆国",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            }
         ],
         "formatted_address" : "アメリカ合衆国",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 71.3898880,
                  "lng" : -66.94539480000002
               },
               "southwest" : {
                  "lat" : 18.91106430,
                  "lng" : 172.45469670
               }
            },
            "location" : {
               "lat" : 37.090240,
               "lng" : -95.7128910
            },
            "location_type" : "APPROXIMATE",
            "viewport" : {
               "northeast" : {
                  "lat" : 71.3898880,
                  "lng" : -66.94539480000002
               },
               "southwest" : {
                  "lat" : 18.91106430,
                  "lng" : 172.45469670
               }
            }
         },
         "types" : [ "country", "political" ]
      }
   ],
   "status" : "OK"
}


Second request


http://maps.googleapis.com/maps/api/geocode/json?address=59+%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AB%E8%A1%97+%E3%83%9E%E3%83%B3%E3%83%8F%E3%83%83%E3%82%BF%E3%83%B3+%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%A8%E3%83%BC%E3%82%AF+10005+%E3%82%A2%E3%83%A1%E3%83%AA%E3%82%AB%E5%90%88%E8%A1%86%E5%9B%BD&sensor=true&language=en
{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "59",
               "short_name" : "59",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Wall St",
               "short_name" : "Wall St",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Lower Manhattan",
               "short_name" : "Lower Manhattan",
               "types" : [ "neighborhood", "political" ]
            },
            {
               "long_name" : "Manhattan",
               "short_name" : "Manhattan",
               "types" : [ "sublocality", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "New York",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "New York",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "New York",
               "short_name" : "NY",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "10005",
               "short_name" : "10005",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "59 Wall St, New York, NY 10005, USA",
         "geometry" : {
            "bounds" : {
               "northeast" : {
                  "lat" : 40.70593059999999,
                  "lng" : -74.00882020
               },
               "southwest" : {
                  "lat" : 40.70591870,
                  "lng" : -74.00883060
               }
            },
            "location" : {
               "lat" : 40.70591870,
               "lng" : -74.00883060
            },
            "location_type" : "RANGE_INTERPOLATED",
            "viewport" : {
               "northeast" : {
                  "lat" : 40.70727363029150,
                  "lng" : -74.00747641970850
               },
               "southwest" : {
                  "lat" : 40.70457566970850,
                  "lng" : -74.01017438029150
               }
            }
         },
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

Download:
The file GeocodeService.java at github
https://github.com/benbai123/JSP_Servlet_Practice/tree/master/Practice/JAVA/Net/src/test

Reference:
http://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests
http://code.google.com/intl/en/apis/maps/documentation/geocoding/

No comments:

Post a Comment