はじめに
http://blogs.yahoo.co.jp/dk521123/33096209.htmlで、Axis2での Cookie の値を取得することはできたが、 Axis2 で、Cookie を設定する方法が不明だったため、調べた。
構文
http://mail-archives.apache.org/mod_mbox/axis-java-user/200704.mbox/%3C6c029ec80704231718v15f74fdfrb1a041b166b88415@mail.gmail.com%3Eより抜粋 Here's one for writing a cookie. /* * This is how to add a custom header, such as a cookie */ Header hdr = new Header("Cookie","my_cookie=xyz;"); ArrayList headers = new ArrayList(); headers.add(hdr); opts = outMsgCtx.getOptions(); opts.setProperty(HTTPConstants.HTTP_HEADERS,headers);
サンプル
http://blogs.yahoo.co.jp/dk521123/32003685.htmlのサンプルをベースにしている。 (設定などについては、上記の記事を参照のこと)
Main.java
import java.util.ArrayList; import java.util.List; import org.apache.axis2.transport.http.HTTPConstants; import org.apache.commons.httpclient.Header; public class Main { public static void main(String[] args) { try { HelloWorldStub stub = new HelloWorldStub("http://localhost:8080/Axis2Sample/services/HelloWorld"); HelloWorldStub.SayHello request = new HelloWorldStub.SayHello(); // ここ注目 List<Header> headers = new ArrayList<Header>(); Header header = new Header(HTTPConstants.HEADER_COOKIE, "CookieKey=Value0001;"); headers.add(header); stub._getServiceClient().getOptions().setProperty( HTTPConstants.HTTP_HEADERS, headers); request.setName("Bob"); HelloWorldStub.SayHelloResponse response = stub.sayHello(request); System.out.println(response.get_return()); } catch (Exception ex) { ex.printStackTrace(); System.err.println("\n\n"); } finally { } } }
補足:HTTPConstantsの実際の定数値
* 以下のサイトを参照のことhttp://axis.apache.org/axis2/java/core/api/constant-values.html#org.apache.axis2.transport.http.HTTPConstants.HEADER_COOKIE
属性の付与には...
* まだちゃんと試していないが、「secure属性」「HttpOnly属性」などを付与するにはどうすれべきか?
方法1
* コードで明示的に書く? Header header = new Header(HTTPConstants.HEADER_COOKIE, "CookieKey=Value0001; HttpOnly; secure");
方法2
* Tomcatであれば、server.xmlで設定する? <session-config> <cookie-config> <http-only>true</http-only> <secure>true</secure> </cookie-config> </session-config>Tomcat のセッション ID に HttpOnly 属性と secure 属性を付与する
http://www.websec-room.com/2013/03/01/306
関連記事
Axis2 のクライアント・スタブで、タイムアウト時間を変更するには...
本記事を調べていたおかげで、タイムアウト時間変更にも役立ったhttp://blogs.yahoo.co.jp/dk521123/33139822.html
クッキー(Cookie)
* クッキーについては、以下の関連記事を参照のことhttp://blogs.yahoo.co.jp/dk521123/28437833.html