元フリーエンジニアライフ

Ruby on Rails とか MovableType とかAWSやってるフリーランスウェブエンジニアの記録でした。現在は法人成りしてIT社長。

AndroidアプリからMovableType DataAPIを使って記事を投稿する

JSONStringer jsonStringer = new JSONStringer();
try {
    jsonStringer.object();
    jsonStringer.key("status").value("Publish");
    jsonStringer.key("title").value("TITLE");
    jsonStringer.key("body").value("BODY");
    jsonStringer.endObject();
} catch(JSONException e) {
    Log.d(getClass().getName(), e.getMessage());
}

bundle.putString("entry", jsonStringer.toString(););

LoaderManager loaderManager = getLoaderManager();
if (loaderManager != null) {
    loaderManager.restartLoader(1, bundle, (MainActivity) getActivity());
}

とこんなかんじで、記事のJSONを作成してAsyncTaskLoaderでHTTPPOSTしてやればOKですが、その際ヘッダーにアクセストークンをセットする必要があります。アクセストークンの取得はこのあたり。

HttpPost request = new HttpPost(url);
request.setHeader("X-MT-Authorization", "MTAuth accessToken=" + accessToken);

List<NameValuePair> postData = new ArrayList<NameValuePair>(1);
postData.add(new BasicNameValuePair("entry", entryJson));
request.setEntity(new UrlEncodedFormEntity(postData, "UTF-8"));

なお、POSTするデータはBasicNameValuePairを使うのが常套手段らしいのでそのようにしました。