【问题标题】:Error consuming a web service with ColdFusion 11使用 ColdFusion 11 使用 Web 服务时出错
【发布时间】:2017-05-31 22:01:02
【问题描述】:

我正在尝试使用他们给我的 URL 来使用 Web 服务。运行页面时出现以下错误:

无法执行 Web 服务调用 RegistraFacturaXML。

调用Web服务操作时返回的错误是: org.apache.axis2.AxisFault:传输错误:302 错误:重定向 在 org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310) 在 org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:194) 在 org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75) 在 org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:402) 在 org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231) 在 org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) 在 org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) 在 org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 在 org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 在 gt.com.megaprint.www.webservice.SSO_wsEFacturaStub.registraFacturaXML(SSO_wsEFacturaStub.java:8431) 在 sun.reflect.NativeMethodAccessorImpl.inv...''

我检查了端口 443 是否打开,并且我安装了发送给我的证书。我使用 SoapUI 调用了 Web 服务,它对我有用。我现在不知道该怎么办?

这是我的代码:

`<cfsavecontent variable="strdata">
 <FACTURA>
  <ENCABEZADO>
    <NOFACTURA>1026</NOFACTURA>
    <RESOLUCION>2016-50-51-35</RESOLUCION>
    <IDSERIE>TBCF</IDSERIE>
    <EMPRESA>883</EMPRESA>
    <SUCURSAL>1</SUCURSAL>
    <CAJA>001</CAJA>
    <USUARIO>JCRUZ</USUARIO>
    <MONEDA>GTQ</MONEDA>
    <TASACAMBIO>1</TASACAMBIO>
    <GENERACION>O</GENERACION>
    <FECHAEMISION>20/12/2016</FECHAEMISION>
    <NOMBRECONTRIBUYENTE>TRANSPORTES ESTRATEGICOS,S.A.</NOMBRECONTRIBUYENTE>
    <DIRECCIONCONTRIBUYENTE>20 AVENIDA 7-95 ZONA 14 GUATEMALA</DIRECCIONCONTRIBUYENTE>
    <NITCONTRIBUYENTE>5559845-5</NITCONTRIBUYENTE>
    <VALORNETO>8869.68</VALORNETO>
    <IVA>1064.36</IVA>
    <TOTAL>9934.04</TOTAL>
    <DESCUENTO>0.00</DESCUENTO>
    <EXENTO>0.00</EXENTO>
  </ENCABEZADO>
  <OPCIONAL>
    <TOTAL_LETRAS>NUEVE MIL NOVECIENTOS TREINTA Y CUATRO  QUETZALES 04/100 ***********************</TOTAL_LETRAS>
  </OPCIONAL>
  <DETALLE>
    <LINEA>
      <CANTIDAD>8</CANTIDAD>
      <DESCRIPCION>11R22.5 16PR LLD37 TRACCION</DESCRIPCION>
      <METRICA>PC</METRICA>
      <PRECIOUNITARIO>1241.76</PRECIOUNITARIO>
      <VALOR>9934.04</VALOR>
    </LINEA>
  </DETALLE>
</FACTURA>
 </cfsavecontent>
<cfinvoke webservice="https://www.ifacere.com/lineapruebas/sso_wsefactura.asmx?wsdl" method="RegistraFacturaXML" returnvariable="RegistraFacturaXMLResult" wsversion="2"> 
    <cfinvokeargument name="pXmlFactura" value="<![CDATA[#strData#]]>"/> 
</cfinvoke> 
<cfoutput>#RegistraFacturaXMLResult#</cfoutput>

`

【问题讨论】:

  • 您的服务调用显然收到了302 HTTP response,这意味着它告诉您请求其他页面。它可能是登录页面或其他东西。如果您只是打开 ColdFusion 服务器上的浏览器并导航到同一个 URL,会发生什么?如果您可以在尝试进行此调用的位置发布代码,这也会有所帮助。那么我们也许可以提供进一步的帮助。
  • 你好,我把我的代码放上去,真的不知道对不对,我是第一次创建web服务。
  • 代码看起来没问题。您确定 ColdFusion 服务器可以访问该网站https://www.ifacere.com/ 吗?如果它位于代理服务器后面,您可能需要提供用户凭据才能访问 Internet(这可能是 302 重定向到登录表单的来源)。这就是为什么我要求您打开 ColdFusion 服务器上的浏览器并尝试转到 URL 以查看是否有效或是否收到提示。

标签: web-services coldfusion certificate coldfusion-11


【解决方案1】:

我使用 SoapUI 调用了 Web 服务,它对我有用。

我记得我遇到过类似的情况。我遇到问题的原因是 Web 服务需要复杂的类型,即 Web 服务定义了 minoccursmaxoccurs

我最终得到的解决方案是使用有效的 SoapUI 响应并将其保存为我的 Soap 请求。然后使用 CFHTTP 标签。请参阅下面帮助我编写自己的 SOAP 解决方案的帖子。 CF 11 和我知道的任何版本都不能处理 minoccursmaxoccurs 复杂类型 Web 服务。

Making SOAP Web Service Requests With ColdFusion

【讨论】:

  • 我会支持这个答案。我不得不在 CF 中多次这样做,因为 CF 版本无法处理 axis2 服务或存在复杂类型。值得庆幸的是,我现在的大部分 Web 服务调用都是针对更容易处理的 REST 服务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多