如何更改SOAP消息的编码
2015-01-27 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:25897
获赞数:1464990
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。
向TA提问 私信TA
关注
展开全部
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. 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)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询