【AXIS2】关于在报文中添加请求头的问题,求高手帮忙

leo2115339 2013-08-21 04:59:04
项目是通过wsdl逆向生成服务端的
现在生产的服务端,用soap ui请求,不加请求头可以访问了,但是加了请求头就告诉我“Disallowed element found inside Envelope : {http://www.xxx.com/soa/}HEADER”

项目是半路接手的,我webService用的也很烂,wsdl完全看不懂

无从下手啊。。。

跪求高手帮忙,就剩这20分了,有点少了,不好意思。

请各路高手提醒下,这个问题一般出在什么地方,应该从哪里入手解决,跪谢!

这是用于逆向生成的wsdl

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:cl="http://www.xxx.com/soa/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PutUserInfomation" targetNamespace="http://www.xxx.com/soa/">
<wsdl:types>
<xsd:schema targetNamespace="http://www.xxx.com/soa/">
<xsd:element name="HEADER" type="cl:HEADER"/>
<xsd:complexType name="HEADER">
<xsd:sequence>
<xsd:element name="SVCNAME" type="xsd:string" maxOccurs="1" minOccurs="1"></xsd:element>
<xsd:element name="SVCCODE" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="SVCVER" type="xsd:string" maxOccurs="1" minOccurs="1"></xsd:element>
<xsd:element name="ORISYS" type="xsd:string" maxOccurs="1" minOccurs="1"></xsd:element>
<xsd:element name="TRANTIME" type="xsd:string" maxOccurs="1" minOccurs="1"></xsd:element>
<xsd:element name="TRANNO" type="xsd:string" maxOccurs="1" minOccurs="1"></xsd:element>
<xsd:element name="FROMSYS" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="RETCODE" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="RETINFO" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="AUTH" type="cl:AUTH" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="SECURITY" type="cl:SECURITY" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="ROUTE" type="cl:ROUTE" maxOccurs="1" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="AUTH">
<xsd:sequence>
<xsd:element name="BRANCHNO" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="USERID" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="TOKENID" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SECURITY">
<xsd:sequence>
<xsd:element name="SIGNATURE" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ROUTE">
<xsd:sequence>
<xsd:element name="BRANCHNO" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
<xsd:element name="DESTSYS" type="xsd:string" maxOccurs="1" minOccurs="0"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="sMSACtiveFromCCS">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RESULTCODE" type="xsd:string"/>
<xsd:element name="SERVICEID" type="xsd:string"/>
<xsd:element name="APPID" type="xsd:string"/>
<xsd:element name="MGBRANCH" type="xsd:string"/>
<xsd:element name="MOBILEPHONE" type="xsd:string"/>
<xsd:element name="CONTENT" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="sMSACtiveFromCCSResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="RESULT" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</wsdl:types>
<wsdl:message name="HEADER">
<wsdl:part element="cl:HEADER" name="HEADER"/>
</wsdl:message>
<wsdl:message name="sMSACtiveFromCCSRequest">
<wsdl:part element="cl:sMSACtiveFromCCS" name="Request"/>
<wsdl:part element="cl:HEADER" name="HEADER"/>
</wsdl:message>
<wsdl:message name="sMSACtiveFromCCSResponse">
<wsdl:part element="cl:sMSACtiveFromCCSResponse" name="Response"/>
<wsdl:part element="cl:HEADER" name="HEADER"/>
</wsdl:message>
<wsdl:portType name="SMSACtiveFromCCS">
<wsdl:operation name="sMSACtiveFromCCS">
<wsdl:input message="cl:sMSACtiveFromCCSRequest"/>
<wsdl:output message="cl:sMSACtiveFromCCSResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SMSACtiveFromCCSSOAP" type="cl:SMSACtiveFromCCS">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="sMSACtiveFromCCS">
<soap:operation soapAction=""/>
<wsdl:input>
<soap:header message="cl:HEADER" part="HEADER" use="literal" />
<soap:body use="literal" parts="Request"/>
</wsdl:input>
<wsdl:output>
<soap:header message="cl:HEADER" part="HEADER" use="literal" />
<soap:body use="literal" parts="Response"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SMSACtiveFromCCS">
<wsdl:port binding="cl:SMSACtiveFromCCSSOAP" name="SMSACtiveFromCCSSOAP">
<soap:address location="http://localhost:7001"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>


这是可以访问的请求报文
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:soa="http://www.xxx.com/soa/"
xmlns:xsd="http://server.soa.clap/xsd">

</soapenv:Header>
<soap:Body>
<soa:sMSACtiveFromCCS>
<!--Optional:-->
<soa:sMSACtiveFromCCS>
<!--Optional:-->
<xsd:aPPID>?</xsd:aPPID>
<!--Optional:-->
<xsd:cONTENT>?</xsd:cONTENT>
<!--Optional:-->
<xsd:mGBRANCH>?</xsd:mGBRANCH>
<!--Optional:-->
<xsd:mOBILEPHONE>?</xsd:mOBILEPHONE>
<!--Optional:-->
<xsd:rESULTCODE>?</xsd:rESULTCODE>
<!--Optional:-->
<xsd:sERVICEID>?</xsd:sERVICEID>
</soa:sMSACtiveFromCCS>
</soa:sMSACtiveFromCCS>
</soap:Body>
</soap:Envelope>


这是添加了请求头之后的报文
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
xmlns:soa="http://www.xxx.com/soa/"
xmlns:xsd="http://server.soa.clap/xsd">
<soapenv:Header>
<cl:HEADER
xmlns:cl="http://www.xxx.com/soa/">
<SVCNAME>SMSACtiveFromCCS</SVCNAME>
<SVCCODE>2</SVCCODE>
<SVCVER>1.0</SVCVER>
<ORISYS>4</ORISYS>
<TRANTIME>5</TRANTIME>
<TRANNO>6</TRANNO>
<AUTH>
<BRANCHNO>7</BRANCHNO>
<USERID>8</USERID>
<TOKENID>9</TOKENID>
</AUTH>
<SECURITY>
<SIGNATURE>10</SIGNATURE>
</SECURITY>
<ROUTE>
<BRANCHNO>110000</BRANCHNO>
<DESTSYS>IVMS</DESTSYS>
</ROUTE>
</cl:HEADER>
</soapenv:Header>
<soap:Body>
<soa:sMSACtiveFromCCS>
<!--Optional:-->
<soa:sMSACtiveFromCCS>
<!--Optional:-->
<xsd:aPPID>?</xsd:aPPID>
<!--Optional:-->
<xsd:cONTENT>?</xsd:cONTENT>
<!--Optional:-->
<xsd:mGBRANCH>?</xsd:mGBRANCH>
<!--Optional:-->
<xsd:mOBILEPHONE>?</xsd:mOBILEPHONE>
<!--Optional:-->
<xsd:rESULTCODE>?</xsd:rESULTCODE>
<!--Optional:-->
<xsd:sERVICEID>?</xsd:sERVICEID>
</soa:sMSACtiveFromCCS>
</soa:sMSACtiveFromCCS>
</soap:Body>
</soap:Envelope>


这是提示错误的返回报文
<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:Action>http://www.w3.org/2005/08/addressing/soap/fault</wsa:Action>
</soapenv:Header>
<soapenv:Body>
<soapenv:Fault>
<soapenv:Code>
<soapenv:Value>soapenv:Receiver</soapenv:Value>
</soapenv:Code>
<soapenv:Reason>
<soapenv:Text xml:lang="en-US">Disallowed element found inside Envelope : {http://www.xxx.com/soa/}HEADER</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail/>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
...全文
565 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
faith_515 2013-12-26
  • 打赏
  • 举报
回复
引用 3 楼 oh_Maxy 的回复:
之前用的axis1.4的 Header要在wsdl里加,然后通过axis自带脚本生成接口及wsdd文件,再将改动处合入原代码。 你检查看看逆向生成的wsdd文件,看看是否需要合入。
怎么添呢? 我wsdl代码如下: <wsdl:types> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://model.advert.businesscfg.msgplus.cdsf.com/xsd"> <xs:complexType name="AdvertInfo"> <xs:sequence> <xs:element minOccurs="0" name="advertContent" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="advertDate" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="advertID" type="xs:long"/> <xs:element minOccurs="0" name="cycleType" type="xs:int"/> <xs:element minOccurs="0" name="dateAdvertDate" nillable="true" type="xs:date"/> <xs:element minOccurs="0" name="disposeType" type="xs:int"/> <xs:element minOccurs="0" name="isValue" type="xs:int"/> <xs:element minOccurs="0" name="languageType" type="xs:int"/> <xs:element minOccurs="0" name="remark" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="timeFlag" nillable="true" type="xs:string"/> <xs:element minOccurs="0" name="weekDay" type="xs:int"/> </xs:sequence> </xs:complexType> </xs:schema> <xs:schema xmlns:ax22="http://model.advert.businesscfg.msgplus.cdsf.com/xsd" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://service.advert.webservice.msgplus.cdsf.com"> <xs:import namespace="http://model.advert.businesscfg.msgplus.cdsf.com/xsd"/> <xs:element name="delAdvertising"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="flowId" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="delAdvertisingResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="addAdvertising"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="advertInfo" nillable="true" type="ax21:AdvertInfo"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="addAdvertisingResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" nillable="true" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="queryAdvertising"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> <xs:element name="queryAdvertisingResponse"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" name="return" nillable="true" type="ax21:AdvertInfo"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> </wsdl:types> <wsdl:message name="addAdvertisingRequest"> <wsdl:part name="parameters" element="ns:addAdvertising"/> </wsdl:message> <wsdl:message name="addAdvertisingResponse"> <wsdl:part name="parameters" element="ns:addAdvertisingResponse"/> </wsdl:message> <wsdl:message name="queryAdvertisingRequest"> <wsdl:part name="parameters" element="ns:queryAdvertising"/> </wsdl:message> <wsdl:message name="queryAdvertisingResponse"> <wsdl:part name="parameters" element="ns:queryAdvertisingResponse"/> </wsdl:message> <wsdl:message name="delAdvertisingRequest"> <wsdl:part name="parameters" element="ns:delAdvertising"/> </wsdl:message> <wsdl:message name="delAdvertisingResponse"> <wsdl:part name="parameters" element="ns:delAdvertisingResponse"/> </wsdl:message> <wsdl:portType name="AdvertServicePortType"> <wsdl:operation name="addAdvertising"> <wsdl:input message="ns:addAdvertisingRequest" wsaw:Action="urn:addAdvertising"/> <wsdl:output message="ns:addAdvertisingResponse" wsaw:Action="urn:addAdvertisingResponse"/> </wsdl:operation> <wsdl:operation name="queryAdvertising"> <wsdl:input message="ns:queryAdvertisingRequest" wsaw:Action="urn:queryAdvertising"/> <wsdl:output message="ns:queryAdvertisingResponse" wsaw:Action="urn:queryAdvertisingResponse"/> </wsdl:operation> <wsdl:operation name="delAdvertising"> <wsdl:input message="ns:delAdvertisingRequest" wsaw:Action="urn:delAdvertising"/> <wsdl:output message="ns:delAdvertisingResponse" wsaw:Action="urn:delAdvertisingResponse"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="AdvertServiceSoap11Binding" type="ns:AdvertServicePortType"> <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="addAdvertising"> <soap:operation soapAction="urn:addAdvertising" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="queryAdvertising"> <soap:operation soapAction="urn:queryAdvertising" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="delAdvertising"> <soap:operation soapAction="urn:delAdvertising" style="document"/> <wsdl:input> <soap:body use="literal"/> </wsdl:input> <wsdl:output> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="AdvertServiceSoap12Binding" type="ns:AdvertServicePortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="addAdvertising"> <soap12:operation soapAction="urn:addAdvertising" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="queryAdvertising"> <soap12:operation soapAction="urn:queryAdvertising" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="delAdvertising"> <soap12:operation soapAction="urn:delAdvertising" style="document"/> <wsdl:input> <soap12:body use="literal"/> </wsdl:input> <wsdl:output> <soap12:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:binding name="AdvertServiceHttpBinding" type="ns:AdvertServicePortType"> <http:binding verb="POST"/> <wsdl:operation name="addAdvertising"> <http:operation location="addAdvertising"/> <wsdl:input> <mime:content type="text/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="text/xml" part="parameters"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="queryAdvertising"> <http:operation location="queryAdvertising"/> <wsdl:input> <mime:content type="text/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="text/xml" part="parameters"/> </wsdl:output> </wsdl:operation> <wsdl:operation name="delAdvertising"> <http:operation location="delAdvertising"/> <wsdl:input> <mime:content type="text/xml" part="parameters"/> </wsdl:input> <wsdl:output> <mime:content type="text/xml" part="parameters"/> </wsdl:output> </wsdl:operation> </wsdl:binding> </wsdl:definitions> 怎么在消息头中加入比如说 用户名 密码等字段信息呢,忘兄台赐教 我qq:342007930
oh_Maxy 2013-12-25
  • 打赏
  • 举报
回复
之前用的axis1.4的 Header要在wsdl里加,然后通过axis自带脚本生成接口及wsdd文件,再将改动处合入原代码。 你检查看看逆向生成的wsdd文件,看看是否需要合入。
  • 打赏
  • 举报
回复
是soap1.1还是1.2?
faith_515 2013-12-25
  • 打赏
  • 举报
回复
兄台 你咋个添加消息头的啊?请教下啊,我死活都在wsdl文件中添加不了消息头啊?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧