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);
- Tags:
- Programming

