2017-01-17 15 views
1

Я пытаюсь использовать веб-сервис, используя URL-адрес, который они мне дали. При запуске страницы я получаю следующее сообщение об ошибке:Ошибка при использовании веб-службы с ColdFusion 11

Cannot perform web service invocation RegistraFacturaXML.

The fault returned when invoking the web service operation is: org.apache.axis2.AxisFault: Transport error: 302 Error: Redirect at org.apache.axis2.transport.http.HTTPSender.handleResponse(HTTPSender.java:310) at org.apache.axis2.transport.http.HTTPSender.sendViaPost(HTTPSender.java:194) at org.apache.axis2.transport.http.HTTPSender.send(HTTPSender.java:75) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.writeMessageWithCommons(CommonsHTTPTransportSender.java:402) at org.apache.axis2.transport.http.CommonsHTTPTransportSender.invoke(CommonsHTTPTransportSender.java:231) at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:443) at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:406) at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) at gt.com.megaprint.www.webservice.SSO_wsEFacturaStub.registraFacturaXML(SSO_wsEFacturaStub.java:8431) at sun.reflect.NativeMethodAccessorImpl.inv... ''

Я проверил, что порт 443 открыт, и я установил сертификат что я был послан. Я вызвал веб-сервис, используя SoapUI, и он работает для меня. Я не знаю, что делать теперь?

это мой код:

`<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> 

`

+1

Ваш вызов службы, по-видимому получения [302 ответа HTTP] (http://stackoverflow.com/questions/973098/what-does-http-1-1-302-mean-exactly), который означает, что он просит вас запросить другую страницу. Это может быть страница входа в систему или что-то еще. Что произойдет, если вы просто откроете браузер на своем сервере ColdFusion и перейдете к тому же самому URL? Это также поможет, если вы сможете опубликовать код, в котором вы пытаетесь выполнить этот вызов. Тогда мы сможем помочь дальше. –

+0

Привет, я положил свой код, я действительно не знаю, правильно ли это, я впервые создаю веб-службы. –

+0

Код выглядит нормально. Вы уверены, что сервер ColdFusion может получить доступ к этому сайту 'https: // www.ifacere.com /'? Если он сидит за прокси-сервером, вам может потребоваться предоставить учетные данные пользователя для доступа в Интернет (который может быть источником перенаправления 302 в форму входа). Вот почему я попросил вас открыть браузер на сервере ColdFusion и попытаться перейти к URL-адресу, чтобы узнать, работает ли это или вы получите подсказку. –

ответ

2

I called the web service using SoapUI and it works for me.

Я помню подобную ситуацию, что я столкнулся. Причина, по которой у меня возникли проблемы, заключалась в том, что веб-служба ожидала сложных типов, т. Е. Веб-служба имела minoccurs и maxoccurs.

Решение, с которым я столкнулся, состояло в том, чтобы использовать ответ SoapUI, который сработал, и сохранить его в качестве моего запроса на мыло. Затем используйте тег CFHTTP. См. Сообщение ниже, которое помогло мне написать собственное SOAP-решение. Ни CF 11, ни какая-либо версия, о которой я знаю, обрабатывает веб-службу сложных типов minoccurs или maxoccurs.

Making SOAP Web Service Requests With ColdFusion

+0

Я отвечу на второй ответ. Мне приходилось делать это несколько раз в CF, потому что либо версия CF не могла обрабатывать службы axis2, либо были сложные типы. К счастью, большинство моих вызовов веб-сервисов теперь относятся к службам REST, с которыми гораздо легче справиться. –