Java 不支持SOAP编码

Java 不支持SOAP编码,java,soap,wsdl,Java,Soap,Wsdl,我有如下格式的WSDLurl,这似乎是正确的。在终端中使用wsimport进行解析后,我得到一个错误: 从终端运行: tux-world@alachiq:~/Desktop/Project/java > wsimport -keep -s wsdl/ example.com/wsdl/wsdl.php?wsdl parsing WSDL... [ERROR] "Use of SOAP Encoding is not supported. SOAP extension element

我有如下格式的
WSDL
url,这似乎是正确的。在终端中使用
wsimport
进行解析后,我得到一个错误:

从终端运行:

tux-world@alachiq:~/Desktop/Project/java > wsimport -keep -s wsdl/ example.com/wsdl/wsdl.php?wsdl
parsing WSDL...


[ERROR] "Use of SOAP Encoding is not supported. 
SOAP extension element on line 59 in example.com/wsdl/wsdl.php?wsdl has use="encoded" "

Failed to parse the WSDL.
WSDL用于解析:

<?xml version="1.0" encoding="ISO-8859-1"?>
<definitions xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:tsmswsdl" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:tsmswsdl">
<types>
<xsd:schema targetNamespace="urn:tsmswsdl"
>
 <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/" />
 <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/" />
 <xsd:complexType name="outGetMessages">
  <xsd:complexContent>
   <xsd:restriction base="SOAP-ENC:Array">
    <xsd:attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[]"/>
   </xsd:restriction>
  </xsd:complexContent>
 </xsd:complexType>
</xsd:schema>
</types>
<message name="GetMessagesRequest">
  <part name="user" type="xsd:string" />
  <part name="pass" type="xsd:string" />
  <part name="idend" type="xsd:int" />
  <part name="count_request" type="xsd:int" /></message>
<message name="GetMessagesResponse">
  <part name="return" type="tns:outGetMessages" /></message>
<message name="login_checkRequest">
  <part name="user" type="xsd:string" />
  <part name="pass" type="xsd:string" /></message>
<message name="login_checkResponse">
  <part name="return" type="tns:outGetMessages" /></message>
<message name="send_smsRequest">
  <part name="user" type="xsd:string" />
  <part name="pass" type="xsd:string" />
  <part name="sms_number" type="xsd:string" />
  <part name="mobile" type="xsd:string" />
  <part name="msg" type="xsd:string" />
  <part name="send_date" type="xsd:string" /></message>
<message name="send_smsResponse">
  <part name="return" type="tns:outGetMessages" /></message>
<portType name="tsmswsdlPortType">
  <operation name="GetMessages">
    <documentation>Get specific user info</documentation>
    <input message="tns:GetMessagesRequest"/>
    <output message="tns:GetMessagesResponse"/>
  </operation>
  <operation name="login_check">
    <documentation>Get specific user info</documentation>
    <input message="tns:login_checkRequest"/>
    <output message="tns:login_checkResponse"/>
  </operation>
  <operation name="send_sms">
    <documentation>Get specific user info</documentation>
    <input message="tns:send_smsRequest"/>
    <output message="tns:send_smsResponse"/>
  </operation>
</portType>
<binding name="tsmswsdlBinding" type="tns:tsmswsdlPortType">
  <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
  <operation name="GetMessages">
    <soap:operation soapAction="urn:tsmswsdl#GetMessages" style="rpc"/>
    <input><soap:body use="encoded" namespace="urn:tsmswsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input>
    <output><soap:body use="encoded" namespace="urn:tsmswsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output>
  </operation>
  <operation name="login_check">
    <soap:operation soapAction="urn:tsmswsdl#login_check" style="rpc"/>
    <input><soap:body use="encoded" namespace="urn:tsmswsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input>
    <output><soap:body use="encoded" namespace="urn:tsmswsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output>
  </operation>
  <operation name="send_sms">
    <soap:operation soapAction="urn:tsmswsdl#send_sms" style="rpc"/>
    <input><soap:body use="encoded" namespace="urn:tsmswsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input>
    <output><soap:body use="encoded" namespace="urn:tsmswsdl" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output>
  </operation>
</binding>
<service name="tsmswsdl">
  <port name="tsmswsdlPort" binding="tns:tsmswsdlBinding">
    <soap:address location="example.com/wsdl/wsdl.php"/>
  </port>
</service>
</definitions>

获取特定用户信息
获取特定用户信息
获取特定用户信息

为了消除这个问题是否有答案的模糊性,我从@Roman Vottner的评论中发布了答案:

JAX-WS的版本2不支持rpc/encoded。如果您控制web服务,请尝试将rpc/encoded更改为document/literal

建议阅读:


  • 您似乎正在使用JAX-WS版本2.*(您可以通过在命令行中键入
    wsimport-version
    进行检查)。JAX-WS的版本2不再支持rpc/encoded。如果您控制web服务,您可能应该从rpc/encoded更改为document/literal——还可以查看一下@RomanVottner,我找不到任何关于这方面的文档。你能帮我做些简单的更改或如何更改吗?或者指出
    wsimport
    不再支持RPC/encoded。你的失败也表明了这一点。如果您按照建议的IBM文章的链接进行操作,那么应该很清楚如何更改WSDL文件中的行为—然而,更改WSDL是不够的—服务器端需要更改too@RomanVottner谢谢,先生。你能帮我找到这个链接吗?下载Axis后我无法使用命令。您是否尝试过?