веб-сервис написан на Java, но вызван в C # - PullRequest
2 голосов
/ 23 февраля 2011

Я пытаюсь импортировать веб-сервис из другого приложения в пользовательское приложение asp.net.Тем не менее, это выдает ошибку в данный момент.Вы уже видели следующую ошибку (см. Ниже)?

Ошибка пользовательского инструмента: невозможно импортировать WebService / Schema.Невозможно импортировать привязку 'AuthenticateSoapBinding' из пространства имен 'http://site:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate'. Невозможно импортировать операцию' подключение '.Типы должны быть объявлены на верхнем уровне в схеме.Пожалуйста, просмотрите тип схемы 'Карта' из пространства имен 'http://xml.apache.org/xml-soap': элемент' item 'использует объявление анонимного типа, анонимные типы не поддерживаются с закодированным SOAP.

Некоторые первоначальные исследования в Google показываютследующее:

Java .Net Interop.Ось java.util.Map http://wiki.apache.org/ws/FrontPage/Axis/DotNetInteropMapInfo

В которой упоминалось, что веб-сервис необходимо изменить.Тем не менее, я не думаю, что это произойдет.Есть идеи, как это обойти?

Ниже приведен веб-сервис XML, из которого я получаю информацию:

<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="http://server:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://server:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate" xmlns:intf="http://server:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><wsdl:types><schema targetNamespace="http://xml.apache.org/xml-soap" xmlns="http://www.w3.org/2001/XMLSchema"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="Map"><sequence><element maxOccurs="unbounded" minOccurs="0" name="item"><complexType><all><element name="key" type="xsd:anyType"/><element name="value" type="xsd:anyType"/></all></complexType></element></sequence></complexType></schema></wsdl:types>
  <message name="keepAliveResponse">
    <part name="keepAliveReturn" type="apachesoap:Map"/>
  </message>
  <message name="connectResponse">
    <part name="connectReturn" type="apachesoap:Map"/>
  </message>
  <message name="connectRequest">
    <part name="username" type="xsd:string"/>
    <part name="password" type="xsd:string"/>
  </message>
  <message name="disconnectRequest">
  </message>
  <message name="disconnectResponse">
    <part name="disconnectReturn" type="apachesoap:Map"/>
  </message>
  <message name="keepAliveRequest">
  </message>
  <portType name="Authenticate">
    <operation name="connect" parameterOrder="username password">
      <input message="impl:connectRequest" name="connectRequest"/>
      <output message="impl:connectResponse" name="connectResponse"/>
    </operation>
    <operation name="keepAlive">
      <input message="impl:keepAliveRequest" name="keepAliveRequest"/>
      <output message="impl:keepAliveResponse" name="keepAliveResponse"/>
    </operation>
    <operation name="disconnect">
      <input message="impl:disconnectRequest" name="disconnectRequest"/>
      <output message="impl:disconnectResponse" name="disconnectResponse"/>
    </operation>
  </portType>
  <binding name="AuthenticateSoapBinding" type="impl:Authenticate">
    <wsdlsoap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="connect">
      <wsdlsoap:operation soapAction=""/>
      <input name="connectRequest">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.livetime.com" use="encoded"/>
      </input>
      <output name="connectResponse">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://server:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate" use="encoded"/>
      </output>
    </operation>
    <operation name="keepAlive">
      <wsdlsoap:operation soapAction=""/>
      <input name="keepAliveRequest">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.livetime.com" use="encoded"/>
      </input>
      <output name="keepAliveResponse">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://server:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate" use="encoded"/>
      </output>
    </operation>
    <operation name="disconnect">
      <wsdlsoap:operation soapAction=""/>
      <input name="disconnectRequest">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://ws.livetime.com" use="encoded"/>
      </input>
      <output name="disconnectResponse">
        <wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://server:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate" use="encoded"/>
      </output>
    </operation>
  </binding>
  <service name="Authenticate">
    <port binding="impl:AuthenticateSoapBinding" name="Authenticate">
      <wsdlsoap:address location="http://server:80/LiveTime/WebObjects/LiveTime.woa/ws/Authenticate"/>
    </port>
  </service>
</definitions>
...