如何更改SOAP消息的编码

OAP消息的编码一般默认为UTF-8,一般情况下是能满足我们的开发的,但是在具体的的项目开发里,可能需要调整为特殊的编码,如Shift_JIS、 GB2312、UTF-16等。鉴于网上关于这方面的资料很少,通过几个小时的搜索和测试,终于找到了更改编码的方式。本文主要以Axis和Axis2做 为SOAP引擎为例,总结其更改方法。
1. Axis
  *Stub.java文件的调用方法里增加蓝色语句(_call.setProperty(org.apache.axis.client.Call.CHARACTER_SET_ENCODING, "Shift_JIS");

         org.apache.axis.client.Call _call = createCall();
        _call.setOperation(_operations[0]);
        _call.setUseSOAPAction(true);
        _call.setEncodingStyle(null);
        _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
        _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
        _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
        _call.setOperationName(new javax.xml.namespace.QName("http://tempuri.org/wkn15h0", "KN15H0"));
         _call.setProperty(org.apache.axis.client.Call.CHARACTER_SET_ENCODING, "Shift_JIS");

   其中 org.apache.axis.client.Call.CHARACTER_SET_ENCODING = javax.xml.soap.character-set-encoding
其他SOAP引擎也是通过类似setProperty(
"javax.xml.soap.character-set-encoding", "Shift_JIS" )的方式进行更改编码的。

2. Aixs2
   在
*Stub.java文件的调用方法里,应该有两种方法修改。
   方法一:通过MessageContext.setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,"UTF-16");
   方法二:_operationClient.getOptions().setProperty(org.apache.axis2.Constants.Configuration.CHARACTER_SET_ENCODING,"Shift_JIS");
 (注意: 通过以上两种方式,测试发现都不能成功,似乎始终是按照UTF-8编码处理,参照:http://www.nabble.com/-Axis2--Character-Set-Encoding-problem-td18645088.html)

参考:
    1. http://mail-archives.apache.org/mod_mbox/ws-axis-user/200504.mbox/%3C57023d1305042000012efa50d5@mail.gmail.com%3E
    2. http://ws.apache.org/axis2/1_4_1/http-transport.html
    3. http://www.w3school.com.cn/soap/soap_httpbinding.asp
    4. http://publib.boulder.ibm.com/infocenter/wsdoc400/v6r0/index.jsp?topic=/com.ibm.websphere.iseries.doc/info/ae/ae/twbs_changeutf.html

 

转载 http://blog.csdn.net/chopin407/article/details/3505297

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值