Adobe AIRアプリケーションへのコードサイニング署名(アプリの電子署名・証明書)の記事は、
ADOBE DEVELOPER CONNECTIONにあります。
※こちら(http://www.adobe.com/jp/devnet/air/articles/globalsign_codesign.html)。

認証局

 ※Web Designing (ウェブデザイニング) 2009年 01月号 [雑誌] にも記事がありました。

flickrやtwitterなどのRESTの戻り値で、XMLだけでなく、JSONもサポートしている場合、

AndroidでもJSON形式のデータにアクセスできます。

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

JSONArray jsons = new JSONArray(json);
for (int i = 0; i < jsons.length(); i++) {
    JSONObject jsonObj = jsons.getJSONObject(i);
    id = jsonObj.getInt("id");
    text = jsonObj.getString("text");
    ...
}

まず、RESTで得られたInputStreamインスタンスを、
BufferedReaderやStringBuilderでString(上記ソースでは、json)に変換したら、

org.jsonパッケージのJSONArrayクラスに同文字列を渡してインスタンス化します。

すると、JSONObjectの配列が得られますので、順次アクセスして、目的の要素を取得できます。

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をパースするなどしていけばよいです。

org.apache.http.conn.scheme.SchemeパッケージのSchemeRegistryクラスは、
"http"や"https"のようなプロトコルスキームを登録するクラスです。

※このクラスは、DefaultHttpClientクラスを使用する際に必要になります

インスタンス作成後、スキームを登録するには、SchemeRegistry.register()を呼び出します。

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

final SchemeRegistry schemeRegistryRegistry = new SchemeRegistry();
schemeRegistryRegistry.register(
    new Scheme(HttpHost.DEFAULT_SCHEME_NAME, // "http"
        PlainSocketFactory.getSocketFactory(),
        80));    // ポート番号

 ちなみに、SchemeRegistry.register()の引数には、
同(org.apache.http.conn.scheme.Scheme)パッケージのSchemeインスタンスを渡す必要があるのですが、
上記のような引数を渡せば、インスタンス化できます。

※PlainSocketFactoryも、同(org.apache.http.conn.scheme.Scheme)パッケージのクラスです

org.apache.http.paramsパッケージのBasicHttpParamsクラスは、
HTTPバージョンやキャラクタセットなどのHTTPプロトコルパラメータを保持するクラスです。

※このクラスは、SingleClientConnManager/ThreadSafeClientConnManagerや、DefaultHttpClientクラスを使用する際に必要になります

インスタンス作成後、パラメータを設定するには、
同(org.apache.http.params)パッケージのHttpProtocolParamsクラスを使用します。

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

final HttpParams httpParams = new BasicHttpParams();
HttpProtocolParams.setVersion(httpParams, HttpVersion.HTTP_1_1);    // HTTP 1.1
HttpProtocolParams.setContentCharset(httpParams, HTTP.UTF_8);        // UTF-8

ちなみに、
HTTPバージョンは、org.apache.httpパッケージのHttpVersionクラスの定数である
HTTP_0_9、HTTP_1_0、HTTP_1_1(通常はコレ)を利用できます。

また、
キャラクタセットには、org.apache.http.protocolパッケージのHTTPクラスの定数である
DEFAULT_CONTENT_CHARSET("ISO-8859-1")や、UTF_8("UTF-8")
などを利用できます。

※RESTサービスの多く(Flickr、Picasa、YouTube、Twitter)は、UTF-8です

<<前のページへ 7475767778798081828384

2012年7月

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 31