短縮URLをJavaで取得する方法についてまとめました.
Androidアプリでも利用できます.
ここではapacheのorg.apache.http.HttpResponseを利用してJSONデータを送り出し、JSONデータを受け取ってパースします.
パースするにはJSONパーサーを用いることも出来ますが、簡単なデータしか受け取らないため、String型を用いて処理しています.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
HttpClient httpClient = new DefaultHttpClient(); URI shortener = new URI(GOOGLE_URL_SHORTENER);//宣言は、private static final String GOOGLE_URL_SHORTENER = "https://www.googleapis.com/urlshortener/v1/url"; HttpPost httpReq = new HttpPost(shortener); httpReq.addHeader("Content-Type", "application/json");//jsonの利用を宣言 StringBuilder jsonParam = new StringBuilder(); jsonParam.append("{'longUrl': '").append(url).append("'}");// パラメータにurl(短縮したいURL)を設定する. httpReq.setEntity(new StringEntity(jsonParam.toString())); //requestにjsonパラメータを設定します final HttpResponse httpRes = httpClient.execute(httpReq); BufferedReader inputReader = new BufferedReader(new InputStreamReader(httpRes.getEntity().getContent())); String url = null; /* 戻ってくるJSONデータは以下の構造をしている. idに短縮後のURL、longUrlに短縮前のURLが設定される { "kind": "urlshortener#url", "id": "http://goo.gl/XXXX", "longUrl": "http://foo.jp" } */ for (String line = inputReader.readLine(); line != null; line = inputReader.readLine()) { if (line.trim().startsWith("id")) { String jsonVal = line.split(":")[1]; url = jsonVal.substring(8, jsonVal.length() - 1); // '"http://'と'"' を除外 } } |