[Android] HTTP(DefaultHttpClient/HttpHost/HttpGet/HttpResponse/HttpEntity)

| トラックバック(0) |

org.apache.http.impl.clientパッケージのDefaultHttpClientクラスは、
HTTPクライアントを実装したクラスです。

インスタンス化するには、ThreadSafeClientConnManagerやHttpParamsのインスタンスを渡します。

具体的なサンプルコードは、以下のとおりです。

final HttpClient httpClient = new DefaultHttpClient(
    new ThreadSafeClientConnManager(httpParams, schemeRegistryRegistry),
    httpParams);

 インスタンス作成後、HTTPリクエスト(GETやPUTなど)を発行するには、DefaultHttpClient.execute()を呼び出します。

具体的なサンプルコード(Twitterのpublic_timeline取得)は、以下のとおりです(一部、例外処理を省略して抜粋しています)。

final Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.path("/statuses/public_timeline.xml");

HttpEntity httpEntity = null;

final HttpResponse httpResponse = httpClient.execute(
    new HttpHost("twitter.com", 80),
    new HttpGet(uriBuilder.build().toString()));

if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
    httpEntity = httpResponse.getEntity();
    final InputStream in = httpEntity.getContent();
    final XmlPullParser parser = Xml.newPullParser();
    try {
        parser.setInput(new InputStreamReader(in));
        // ・・・XMLを解析する処理・・・
    } catch (XmlPullParserException e) {
    }
}

順を追って説明すると、

DefaultHttpClient.execute()の第1引数には、
org.apache.httpパッケージのHttpHostインスタンスを渡す必要があるため、

new HttpHost(ホスト名、ポート名);

でインスタンス化しています。
ここでのホスト名とは、たとえば、Twitterのタイムラインパスである

http://twitter.com/statuses/public_timeline.xml

の場合、twitter.comの部分です。

また、DefaultHttpClient.execute()の第2引数には、
org.apache.http.client.methodsパッケージのHttpGetインスタンスを渡します。

※同パッケージには、他にもHttpPut、HttpPost、HttpDeleteがあります

HttpGetに渡す引数は、uri文字列ですが、
これは、Uri.Builderクラスから作成できます。

ここでのuriとは、先の例で言うと、/statuses/public_timeline.xmlの部分を指します。

※さらに?key1=value1&key2=value2などを渡すには、appendしていけばよいです

リクエストの戻り値は、org.apache.httpパッケージのHttpResponseクラスであり、HttpResponse.getEntity()を呼び出し、

同(org.apache.http)パッケージのHttpEntityを得た後、
HttpEntity.getContent()を呼び出すと、InputStreamインスタンスが得られます。

あとは、XMLをパースするなどしていけばよいです。

トラックバック(0)

トラックバックURL: http://mt.adakoda.com/mt-tb.cgi/48

2010年9月

      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    

自作フリーソフトウェア