ksoap2-androidで認証cookieを使う

August 13 2011, 4:51am

以前書いたエントリー「ksoap2-android + .NET Web Service」の続きです。

Android端末からSOAPを使ってASP.NETなサイトのログイン処理を利用するお話があり、認証クッキーを使わないと行けないケースが出てきたので、いろいろ調べていたのですが、HeaderPropertyを使えばいいよ的な情報は入手したものの、そんなクラスは無い…。

そこで、ksoap-androidのバージョンを2.5.7に上げたら、HeaderPropertyが追加されていました。どの時点で追加されたのかは確認していませんが、2.5.2の時には無かったもの。

import org.ksoap2.HeaderProperty; (中略) private String mCookie = ""; (中略) /* Cookieを取得 */ List<HeaderProperty> headers = new ArrayList<HeaderProperty>(); HttpTransportSE transport = new HttpTransportSE(url); transport.debug = true;

List<HeaderProperty> responseHeaders = new ArrayList<HeaderProperty>(); responseHeaders = transport.call(nameSpace + methodName, envelope, headers);

for(int x=0; x<responseHeaders.size(); x++) { HeaderProperty hp = (HeaderProperty)responseHeaders.get(x); if (hp.getKey().equalsIgnoreCase("Set-Cookie")) { mCookie = hp.getValue().replaceAll(" HttpOnly", ""); break; } Log.d("header", hp.getValue()); } (中略) /* Cookieを送信 */ List<HeaderProperty> headers = new ArrayList<HeaderProperty>(); headers.add(new HeaderProperty("Cookie", mCookie)); transport.call(nameSpace + methodName, envelope, headers); Log.d("dump", transport.requestDump);

Your favourite external commenting service goes here! I recommend http://www.disqus.com