我一直在通过谷歌、stackoverflow 等寻找这个问题。
我找到了很多相关的答案,但没有真正的解决方案。
我正在从 .NET 客户端使用 Axis 服务,但返回始终为 null,无论我发送什么参数,始终为 null。
所以我开始寻找,并尝试从 SOAPUI http://www.soapui.org/,并且成功了!
所以我的第一个想法是,.NET 做错了什么,我搜索了又搜索,发现命名空间存在一些问题。
相关帖子 here http://www.primordialcode.com/blog/post/invoking-javaaxis-web-service-net-return-null-issue
因此,在此之后,我尝试通过服务引用、Web 引用来使用服务,使用 WSDL.EXE 创建代理(创建得非常好!)并查找所有命名空间,但一切都很好。我做了一些更改它到名称空间,但什么也没有。
然后我发现不光命名空间有问题,数组也有问题;事实上,该服务返回类似这样的内容。
<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>
(这个例子是我从 SOAPUI 中得到的)。
相关帖子是here https://issues.apache.org/jira/browse/AXIS-2143
我也尝试过this https://stackoverflow.com/questions/1000578/axis2-always-receives-null-parameters-even-if-soap-request-is-sent-correctly.
并遇到了另一个可能的麻烦here https://stackoverflow.com/questions/3157763/java-webservice-returning-null-object-to-a-net-client名为“item”的数组的列出项目,正如您在上面提到的 WebServiceResponse 中看到的那样,它们是这样列出的。所以在我看来,一切都是 C# 的反序列化问题。我发现了所有这一切的一半解决方案。
现实情况是,.NET 实际上得到了很好的响应,它所遇到的只是反序列化步骤的问题,可能是由于上面提到的所有可能的原因(多个命名空间、数组、名为“item”的数组项)。
http://www.codeproject.com/KB/webservices/Java_WS_NET.aspx http://www.codeproject.com/KB/webservices/Java_WS_NET.aspx
我像这样重写了代理中的方法:
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 ;
}
我抛出异常来查看服务的结果是否被捕获并且实际上就在那里!
因此,毕竟操作系统我不知道是否有修复程序、服务包、有人找到了解决方案或任何关于如何正确取消 WebResponse 的内容。或者如何正确使用该轴服务,我认为最好的方法就是正确序列化响应并覆盖该方法,因为这似乎是.NET的一个错误,我认为它有麻烦,因为所有数组都有一个“项目” “ 在上面。
预先感谢您阅读这篇文章。
我真的非常感谢任何帮助!
再次感谢!。