以前書いたエントリー「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);


コメント