2011-11-05 15 views
10

Szukałem tego problemu za pośrednictwem wszystkich google, stackoverflow i innych. I znalazłem wiele powiązanych z tym odpowiedzi, ale nie jest to prawdziwe rozwiązanie.Wywoływanie usługi WWW Java/AXIS z usługi .NET: problem "Zwróć punkt zerowy"

Używam usługi Axis z klienta .NET, ale zwracanie jest zawsze zerowe, bez względu na parametry, które wysyłam, zawsze ma wartość null.

Więc zacząłem szukać, a ja próbowałem go zużyć z SOAPUI, i zadziałało !.

Tak więc moją pierwszą myślą było, .NET robi coś złego, a ja szukałem i szukałem i odkryłem, że są pewne problemy z przestrzeniami nazw.

Related Post here

Więc po tym, starałem się zużywają usługi za pośrednictwem Serwisu Reference, Web Reference, tworząc proxy z wsdl.exe (Powstał całkiem dobrze!) I spojrzał na wszystkich nazw, ale wszystko lokked dobre .. Wprowadziłem trochę zmian do przestrzeni nazw, ale nic.

Potem odkryłem, że nie tylko przestrzenie nazw są problematyczne, ale także tablice; i w rzeczywistości usługa zwraca coś takiego.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body> 
     <InformacionPolizaResponse xmlns="http://www.openuri.org/"> 
     <ns1:Poliza xmlns:ns1="http://www.example.org/PolizasBanorteSchema"> 
      <ns1:Numero>0036887</ns1:Numero> 
      <ns1:Serie></ns1:Serie> 
      <ns1:Ramo>00110</ns1:Ramo> 
      <ns1:Subramo>00110</ns1:Subramo> 
      <ns1:Inciso></ns1:Inciso> 
      <ns1:ClaveAgente>000270</ns1:ClaveAgente> 
      <ns1:NombreAgente>NOMBRE PENDIENTE</ns1:NombreAgente> 
      <ns1:NumeroOficina></ns1:NumeroOficina> 
      <ns1:FechaEmision>2011-02-15</ns1:FechaEmision> 
      <ns1:FechaInicioVigencia>2011-02-15</ns1:FechaInicioVigencia> 
      <ns1:FechaFinVigencia>2012-02-15</ns1:FechaFinVigencia> 
      <ns1:Estatus>03</ns1:Estatus> 
      <ns1:NombreContratante>CARLOS ZARATE JIMENEZ</ns1:NombreContratante> 
      <ns1:RfcContratante>ZAJC720213K98</ns1:RfcContratante> 
      <ns1:Telefono>0449626251463</ns1:Telefono> 
      <ns1:Moneda>1</ns1:Moneda> 
      <ns1:FormaPago>003</ns1:FormaPago> 
      <ns1:PrimaPrimerPago>237.84</ns1:PrimaPrimerPago> 
      <ns1:PrimaPagoSubsecuente>237.84</ns1:PrimaPagoSubsecuente> 
      <ns1:PrimaNeta>951.36</ns1:PrimaNeta> 
      <ns1:FinancPagofraccionado></ns1:FinancPagofraccionado> 
      <ns1:GastosExpedicion>.00</ns1:GastosExpedicion> 
      <ns1:IVA></ns1:IVA> 
      <ns1:PrimaTotal></ns1:PrimaTotal> 
      <ns1:PolizaOrigen>0036887</ns1:PolizaOrigen> 
      <ns1:PolizaRenueva>0000000</ns1:PolizaRenueva> 
      <ns1:Producto></ns1:Producto> 
      <ns1:Plan></ns1:Plan> 
      <ns1:Asegurados> 
       <ns1:item> 
        <ns1:Nombre>CARLOS ZARATE JIMENEZ</ns1:Nombre> 
        <ns1:Clave></ns1:Clave> 
        <ns1:Direccion> 
        <ns1:Calle></ns1:Calle> 
        <ns1:Colonia></ns1:Colonia> 
        <ns1:Poblacion></ns1:Poblacion> 
        <ns1:Estado></ns1:Estado> 
        <ns1:CP></ns1:CP> 
        <ns1:Texto></ns1:Texto> 
        </ns1:Direccion> 
        <ns1:FechaNacimiento>1972-02-13</ns1:FechaNacimiento> 
        <ns1:Sexo>1</ns1:Sexo> 
        <ns1:Fumador>1</ns1:Fumador> 
        <ns1:Parentesco>0</ns1:Parentesco> 
        <ns1:AntiguedadDesde></ns1:AntiguedadDesde> 
        <ns1:Coberturas> 
        <ns1:item> 
         <ns1:Clave>00150</ns1:Clave> 
         <ns1:Seccion></ns1:Seccion> 
         <ns1:NombreCobertura>SEGURO DE MUERTE ACCIDENTAL</ns1:NombreCobertura> 
         <ns1:LimiteMaximo>250,000</ns1:LimiteMaximo> 
         <ns1:Deducible>.00</ns1:Deducible> 
         <ns1:Prima>820.00</ns1:Prima> 
         <ns1:EdadCalculo>039</ns1:EdadCalculo> 
         <ns1:PlazoSeguro></ns1:PlazoSeguro> 
         <ns1:PlazoPago></ns1:PlazoPago> 
         <ns1:SumaAsegurada>250,000</ns1:SumaAsegurada> 
         <ns1:Coaseguro>.00</ns1:Coaseguro> 
        </ns1:item> 
        <ns1:item> 
         <ns1:Clave>00150</ns1:Clave> 
         <ns1:Seccion></ns1:Seccion> 
         <ns1:NombreCobertura>SEGURO DE MUERTE ACCIDENTAL</ns1:NombreCobertura> 
         <ns1:LimiteMaximo>250,000</ns1:LimiteMaximo> 
         <ns1:Deducible>.00</ns1:Deducible> 
         <ns1:Prima>95.00</ns1:Prima> 
         <ns1:EdadCalculo>039</ns1:EdadCalculo> 
         <ns1:PlazoSeguro></ns1:PlazoSeguro> 
         <ns1:PlazoPago></ns1:PlazoPago> 
         <ns1:SumaAsegurada>250,000</ns1:SumaAsegurada> 
         <ns1:Coaseguro>.00</ns1:Coaseguro> 
        </ns1:item> 
        <ns1:item> 
         <ns1:Clave>00150</ns1:Clave> 
         <ns1:Seccion></ns1:Seccion> 
         <ns1:NombreCobertura>SEGURO DE MUERTE ACCIDENTAL</ns1:NombreCobertura> 
         <ns1:LimiteMaximo>500</ns1:LimiteMaximo> 
         <ns1:Deducible>.00</ns1:Deducible> 
         <ns1:Prima>36.36</ns1:Prima> 
         <ns1:EdadCalculo>039</ns1:EdadCalculo> 
         <ns1:PlazoSeguro></ns1:PlazoSeguro> 
         <ns1:PlazoPago></ns1:PlazoPago> 
         <ns1:SumaAsegurada>500</ns1:SumaAsegurada> 
         <ns1:Coaseguro>.00</ns1:Coaseguro> 
        </ns1:item> 
        </ns1:Coberturas> 
        <ns1:Beneficiarios/> 
       </ns1:item> 
      </ns1:Asegurados> 
      <ns1:Incisos/> 
      <ns1:Recibos> 
       <ns1:item> 
        <ns1:NumeroRecibo>5183648</ns1:NumeroRecibo> 
        <ns1:FechaEmision>2011-02-15</ns1:FechaEmision> 
        <ns1:FechaEstatus>2011-02-26</ns1:FechaEstatus> 
        <ns1:FechaPago>2011-02-26</ns1:FechaPago> 
        <ns1:Estatus>00</ns1:Estatus> 
        <ns1:DescripcionEstatus>GENERADO</ns1:DescripcionEstatus> 
        <ns1:Importe>000000275.89</ns1:Importe> 
        <ns1:Recargos>.00</ns1:Recargos> 
        <ns1:DerechoPoliza>.00</ns1:DerechoPoliza> 
        <ns1:FechaInicioVigencia>2011-02-15</ns1:FechaInicioVigencia> 
        <ns1:FechaFinVigencia>2011-05-15</ns1:FechaFinVigencia> 
        <ns1:PrimaTotal xsi:nil="true"/> 
        <ns1:PrimaPagada xsi:nil="true"/> 
        <ns1:PrimaPendiente xsi:nil="true"/> 
       </ns1:item> 
       <ns1:item> 
        <ns1:NumeroRecibo>5183649</ns1:NumeroRecibo> 
        <ns1:FechaEmision>2011-02-15</ns1:FechaEmision> 
        <ns1:FechaEstatus>2011-02-15</ns1:FechaEstatus> 
        <ns1:FechaPago>1900-00-00</ns1:FechaPago> 
        <ns1:Estatus>00</ns1:Estatus> 
        <ns1:DescripcionEstatus>GENERADO</ns1:DescripcionEstatus> 
        <ns1:Importe>000000275.89</ns1:Importe> 
        <ns1:Recargos>.00</ns1:Recargos> 
        <ns1:DerechoPoliza>.00</ns1:DerechoPoliza> 
        <ns1:FechaInicioVigencia>2011-05-15</ns1:FechaInicioVigencia> 
        <ns1:FechaFinVigencia>2011-08-15</ns1:FechaFinVigencia> 
        <ns1:PrimaTotal xsi:nil="true"/> 
        <ns1:PrimaPagada xsi:nil="true"/> 
        <ns1:PrimaPendiente xsi:nil="true"/> 
       </ns1:item> 
       <ns1:item> 
        <ns1:NumeroRecibo>5183650</ns1:NumeroRecibo> 
        <ns1:FechaEmision>2011-02-15</ns1:FechaEmision> 
        <ns1:FechaEstatus>2011-02-15</ns1:FechaEstatus> 
        <ns1:FechaPago>1900-00-00</ns1:FechaPago> 
        <ns1:Estatus>00</ns1:Estatus> 
        <ns1:DescripcionEstatus>GENERADO</ns1:DescripcionEstatus> 
        <ns1:Importe>000000275.89</ns1:Importe> 
        <ns1:Recargos>.00</ns1:Recargos> 
        <ns1:DerechoPoliza>.00</ns1:DerechoPoliza> 
        <ns1:FechaInicioVigencia>2011-08-15</ns1:FechaInicioVigencia> 
        <ns1:FechaFinVigencia>2011-11-15</ns1:FechaFinVigencia> 
        <ns1:PrimaTotal xsi:nil="true"/> 
        <ns1:PrimaPagada xsi:nil="true"/> 
        <ns1:PrimaPendiente xsi:nil="true"/> 
       </ns1:item> 
       <ns1:item> 
        <ns1:NumeroRecibo>5183651</ns1:NumeroRecibo> 
        <ns1:FechaEmision>2011-02-15</ns1:FechaEmision> 
        <ns1:FechaEstatus>2011-02-15</ns1:FechaEstatus> 
        <ns1:FechaPago>1900-00-00</ns1:FechaPago> 
        <ns1:Estatus>00</ns1:Estatus> 
        <ns1:DescripcionEstatus>GENERADO</ns1:DescripcionEstatus> 
        <ns1:Importe>000000275.89</ns1:Importe> 
        <ns1:Recargos>.00</ns1:Recargos> 
        <ns1:DerechoPoliza>.00</ns1:DerechoPoliza> 
        <ns1:FechaInicioVigencia>2011-11-15</ns1:FechaInicioVigencia> 
        <ns1:FechaFinVigencia>2012-02-15</ns1:FechaFinVigencia> 
        <ns1:PrimaTotal xsi:nil="true"/> 
        <ns1:PrimaPagada xsi:nil="true"/> 
        <ns1:PrimaPendiente xsi:nil="true"/> 
       </ns1:item> 
      </ns1:Recibos> 
      <ns1:Endosos/> 
      <ns1:Siniestros/> 
     </ns1:Poliza> 
     </InformacionPolizaResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 

(Dostałem ten przykład z SOAPUI).

odpowiadającego postu jest here

Próbowałem też this.

I dostałem kolejną możliwą usterkę z here z wymienionymi elementami tablicy o nazwie "element", jak widać w wyżej wspomnianej WebServiceResponse, są one wymienione w ten sposób. Tak więc wszystko wydawało mi się, że jest to problem deserializacji z C#. I szukając znalazłem rozwiązanie na pół tego rozwiązania.

Rzeczywistość była taka, że ​​faktycznie .NET uzyskał bardzo dobrą odpowiedź, wszystko, co ma, to problem z krokiem deserializacji w przypadku wszystkich wymienionych wyżej przyczyn posibles (wiele przestrzeni nazw, tablic, elementów tablicy o nazwie "element").

http://www.codeproject.com/KB/webservices/Java_WS_NET.aspx

I overrided metodę w moim Proxy tak:

protected override System.Net.WebResponse GetWebResponse(System.Net.WebRequest request) 
    { 
     WebResponse wr = base.GetWebResponse(request); 
     StreamReader sr = new StreamReader(wr.GetResponseStream()); 
     //throw new Exception(sr.ReadToEnd()); 
     return wr ;  
    } 

I rzucony wyjątek, czy wynik Służby został przechwycony i faktycznie jest tuż, tuż!

Po tym wszystkim nie wiem, czy jest poprawka, dodatek Service Pack, ktoś znalazł rozwiązanie lub cokolwiek o tym, JAK MOGĘ DESEREALIZOWAĆ POPRAWNIE WebResponse. Albo jak poprawnie spożytkować tę usługę osi, myślę, że najlepszym podejściem do tego jest tylko serializacja odpowiedzi poprawnie przesłonięcie metody, ponieważ wydaje się, że jest to błąd .NET, myślę, że ma kłopoty z tym, ponieważ wszystko ma "element" " na tym.

Z góry dziękuję za przeczytanie tego postu.

Naprawdę naprawdę doceniam każdą pomoc !.

Jeszcze raz dziękuję !.

Odpowiedz

9

W końcu rozwiązałem ten problem, mój przyjaciel pomógł mi, najwyraźniej były problemy z WSDL i przestrzeniami nazw. C# wygenerował błąd serwera proxy. Nie wiem, czy to problem C#, czy oś. Ale miej nadzieję, że ta odpowiedź pomoże komuś innemu. Zobacz wszystkie przestrzenie nazw w metodach WebService. C# Wygenerowano taką metodę.

/// <remarks/> 
     [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.openuri.org/InformacionPoliza", RequestNamespace = "http://www.openuri.org/", ResponseNamespace = "http://www.openuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] 
     [return: System.Xml.Serialization.XmlElementAttribute("Poliza")] 
     public Poliza InformacionPoliza(CriteriosPoliza CriteriosPoliza) 
     { 
      object[] results = this.Invoke("InformacionPoliza", new object[] { 
        CriteriosPoliza}); 
      return ((Poliza)(results[0])); 
     } 

Ale w WSDL miał coś takiego ..

<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://www.openuri.org/" xmlns:intf="http://www.openuri.org/" xmlns:tns1="http://www.example.org/PolizasBanorteSchemaCriterios" **xmlns:tns2="http://www.example.org/PolizasBanorteSchema"** xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.openuri.org/"> 
<!-- 
WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006 (06:55:48 PDT) 
--> 
<wsdl:types> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.openuri.org/"> 
<import namespace="http://www.example.org/PolizasBanorteSchema"/> 
<import namespace="http://www.example.org/PolizasBanorteSchemaCriterios"/> 
<element name="InformacionPoliza"> 
<complexType> 
<sequence> 
<element name="CriteriosPoliza" type="tns1:CriteriosPoliza"/> 
</sequence> 
</complexType> 
</element> 
<element name="InformacionPolizaResponse"> 
<complexType> 
<sequence> 
**<element name="Poliza" type="tns2:Poliza"/>** 
</sequence> 
</complexType> 
</element> 
</schema> 

Spójrz na <element name="Poliza" type="tns2:Poliza"/> to odnosi się do tns2 nazw i mówi xmlns:tns2="http://www.example.org/PolizasBanorteSchema"

So proxy wygenerowany przez NET było nie tak, musiało tak być

/// <remarks/> 
     [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.openuri.org/InformacionPoliza", RequestNamespace = "http://www.openuri.org/", ResponseNamespace = "http://www.openuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] 
     [return: System.Xml.Serialization.XmlElementAttribute("Poliza", Namespace = "http://www.example.org/PolizasBanorteSchema")] 
     public Poliza InformacionPoliza(CriteriosPoliza CriteriosPoliza) 
     { 
      object[] results = this.Invoke("InformacionPoliza", new object[] { 
        CriteriosPoliza}); 
      return ((Poliza)(results[0])); 
     } 

Przestrzeń nazw nie magia,

[return: System.Xml.Serialization.XmlElementAttribute("Poliza", Namespace = "http://www.example.org/PolizasBanorteSchema")] 

Zmieniono tej linii kodu i wszystko działało jak czar więc być ostrożnym przy użyciu tablic i zróżnicowanego nazw w służbie osi, można mieć pewne problemy generujące aC# klient.

This post rację :)

+2

Dzięki za posta, to odpowiedział dokładnie problem miałem z użyciem OC4J oparte usług internetowych z dokumentu/usług dosłownym i niestandardowych WSDL. – Etienne

Powiązane problemy