动态调用Web服务

时间:2012-03-19 13:17:20

标签: .net vb.net web-services

我想使用VB .Net动态调用Web服务。 在Visual Studio中将其作为Web引用添加时,我可以使用Web服务,因此Web服务端很好。

我正在关注这个article,这有点成功,也就是说,它适用于我尝试的一些但不是所有服务。如果失败,它会抛出:

System.InvalidOperationException: Unable to Import Binding from Namespace
...
Unabled to find 'http://service/:helloWorld'

这引导我进入Bug。我不太确定它是否真的相关,因为WSDL中没有<inlcude>个元素:

<?xml version='1.0' encoding='UTF-8'?>
 <definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://service/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://service/" name="simple">
<types>
  <xsd:schema>
    <xsd:import namespace="http://service/" schemaLocation="http://localhost:8080/simple/simple?xsd=1"/>
  </xsd:schema>
</types>
<message name="helloWorld">
  <part name="parameters" element="tns:helloWorld"/>
</message>
<message name="helloWorldResponse">
  <part name="parameters" element="tns:helloWorldResponse"/>
</message>
<portType name="simple">
  <operation name="helloWorld">
    <input wsam:Action="http://service/simple/helloWorldRequest" message="tns:helloWorld"/>
    <output wsam:Action="http://service/simple/helloWorldResponse" message="tns:helloWorldResponse"/>
  </operation>
</portType>
<binding name="simplePortBinding" type="tns:simple">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
    <operation name="helloWorld">
      <soap:operation soapAction=""/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>
  <service name="simple">
    <port name="simplePort" binding="tns:simplePortBinding">
      <soap:address location="http://localhost:8080/simple/simple"/>
    </port>
  </service>
</definitions>

导入的xsd如下所示:

<xs:schema version="1.0" targetNamespace="http://service/"><xs:element name="helloWorld" type="tns:helloWorld"/>
  <xs:element name="helloWorldResponse" type="tns:helloWorldResponse"/>
    <xs:complexType name="helloWorld">
      <xs:sequence/>
    </xs:complexType>
    <xs:complexType name="helloWorldResponse">
      <xs:sequence>
        <xs:element name="return" type="xs:string" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
 </xs:schema>

两者都是从部署在glassfish上的JAX-WS Web服务自动生成的。

所以问题是:是什么导致了这个错误,是否有一个解决方法,不涉及更改Web服务?

0 个答案:

没有答案