【发布时间】:2018-01-12 21:12:52
【问题描述】:
我是这个肥皂消息和东西的新手,我在使用 WebService 时遇到了一些麻烦,我使用 WSDL.exe 创建了一个类,我遇到的第一个问题是在执行命令时,它创建了一个参数var[][] 我必须替换为单个 var[](数组)。
然后它编译成功,现在我遇到了一些问题,我不知道如何解决它:
我发送的请求是这个:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<emitirWS xmlns="http://neon.stoconsulting.com/NeonEmisionWS/NeonEmisionWS?wsdl">
<comprobante serie="W" folio="143" formaPago="01" condicionesDePago="CONTADO" tipoCambio="1.000000" moneda="MXN" metodoPago="PUE" lugarExpedicion="54080" tipoComprobante="I" subTotal="827.586207" descuento="0.000000" total="960.00" documentoErp="143" usoCfdi="G03" tipoDocumento="1">
<envioCfdi enviarXml="1" enviarPdf="1" enviarZip="0" emails="felipe.pinav@gmail.com" />
<emisor rfc="ASM160607Q43" nombre="ARTHUR AND SONS MEXICO" regimenFiscal="601" idEmisorSto="1" idEmisorErp="1" />
<sucursal rfc="ASM160607Q43" nombre="Plaza Polanco" regimenFiscal="601" idEmisorSto="2" idEmisorErp="2" numeroExterior="411" calle="Avenida Palmas" colonia="Miguel Hidalgo" referencia="" municipio="Toluca" estado="Edo. de México" pais="Mexico" codigoPostal="54080" email="hola@arthursons.com" idTipoEmisor="2" idEmisorPadre="1" estatusRegistro="1" />
<receptor rfc="PIVF810724LW9" nombre="Felipe Pina Vera" regimenFiscal="622" usoCfdi="G01" idReceptoSto="1" idReceptorErp="1" numeroExterior="141A" calle="Viveros de Coyoacán" colonia="Viveros de la Loma" municipio="Tlalnepantla" estado="Edo. de México" pais="Mexico" codigoPostal="54080" email="felipe.pinav@gmail.com" idEmisorPadre="0" estatusRegistro="1" />
<conceptos claveProdServ="42142901" cantidad="1.000000" claveUnidad="H87" unidad="Pieza" numIdentificacion="5" descripcion="BENSEN - AZUL" valorUnitario="827.586207" importe="827.586207" descuento="0.000000" xmlns="">
<impuestos>
<trasladados base="827.586207" impuesto="002" tipoFactor="Tasa" tasaOCuota="0.160000" importe="132.413793" />
</impuestos>
</conceptos>
<impuestos totalImpuestosRetenidos="0.000000" totalImpuestosTrasladados="132.413793" xmlns="">
<trasladados impuesto="002" tipoFactor="Tasa" tasaOCuota="0.160000" importe="132.413793" />
</impuestos>
</comprobante>
</emitirWS>
</soap:Body>
</soap:Envelope>
当它到达服务器时,由于请求没有正确的格式,无法处理,正确的格式是这个:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:neon="http://neon.stoconsulting.com/NeonEmisionWS/NeonEmisionWS?wsdl">
<soap:Body>
<neon:emitirWS>
<comprobante serie="W" folio="143" formaPago="01" condicionesDePago="CONTADO" tipoCambio="1.000000" moneda="MXN" metodoPago="PUE" lugarExpedicion="54080" tipoComprobante="I" subTotal="827.586207" descuento="0.000000" total="960.00" documentoErp="143" usoCfdi="G03" tipoDocumento="1">
<envioCfdi enviarXml="1" enviarPdf="1" enviarZip="0" emails="felipe.pinav@gmail.com" />
<emisor rfc="ASM160607Q43" nombre="ARTHUR AND SONS MEXICO" regimenFiscal="601" idEmisorSto="1" idEmisorErp="1" />
<sucursal rfc="ASM160607Q43" nombre="Plaza Polanco" regimenFiscal="601" idEmisorSto="2" idEmisorErp="2" numeroExterior="411" calle="Avenida Palmas" colonia="Miguel Hidalgo" referencia="" municipio="Toluca" estado="Edo. de México" pais="Mexico" codigoPostal="54080" email="hola@arthursons.com" idTipoEmisor="2" idEmisorPadre="1" estatusRegistro="1" />
<receptor rfc="PIVF810724LW9" nombre="Felipe Pina Vera" regimenFiscal="622" usoCfdi="G01" idReceptoSto="1" idReceptorErp="1" numeroExterior="141A" calle="Viveros de Coyoacán" colonia="Viveros de la Loma" municipio="Tlalnepantla" estado="Edo. de México" pais="Mexico" codigoPostal="54080" email="felipe.pinav@gmail.com" idEmisorPadre="0" estatusRegistro="1" />
<conceptos claveProdServ="42142901" cantidad="1.000000" claveUnidad="H87" unidad="Pieza" numIdentificacion="5" descripcion="BENSEN - AZUL" valorUnitario="827.586207" importe="827.586207" descuento="0.000000">
<impuestos>
<trasladados base="827.586207" impuesto="002" tipoFactor="Tasa" tasaOCuota="0.160000" importe="132.413793" />
</impuestos>
</conceptos>
<impuestos totalImpuestosRetenidos="0.000000" totalImpuestosTrasladados="132.413793">
<trasladados impuesto="002" tipoFactor="Tasa" tasaOCuota="0.160000" importe="132.413793" />
</impuestos>
</comprobante>
</neon:emitirWS>
</soap:Body>
</soap:Envelope>
我需要切换:
1) 在信封节点中,我需要添加一个新属性:
xmlns:neon="http://neon.stoconsulting.com/NeonEmisionWS/NeonEmisionWS?wsdl"
2) 在 emitir 节点上,我需要它是 <neon:emitir></neon:emitir> 而不是常规的 <emitir>
当我这样做时,一切都像一个魅力,就像我说我用 wsdl.exe 工具创建了这个类,这是我正在使用的代码:
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", RequestNamespace = "http://neon.stoconsulting.com/NeonEmisionWS/NeonEmisionWS?wsdl", ResponseNamespace = "http://neon.stoconsulting.com/NeonEmisionWS/NeonEmisionWS?wsdl", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[return: System.Xml.Serialization.XmlElementAttribute("RespuestaWS", Form = System.Xml.Schema.XmlSchemaForm.Unqualified)]
[WebServiceSOAPExtension]
public respuestaWS emitirWS(comprobante comprobante)
{
object[] results = this.Invoke("emitirWS", new object[] {
comprobante});
return ((respuestaWS)(results[0]));
}
谢谢,我不知道从哪里开始。
【问题讨论】:
-
听起来 SOAP 服务不是 Microsoft 服务。我遇到过类似的问题,最后求助于原始 XML 和 HttpClient
-
好吧,就像我写的答案一样,我做了一些你不应该做的事情,但是它正在工作,这就是我所需要的,我仍然在寻找正确的方式,但同时我正在这样做.