Pregunta

Tengo que usar un servicio web de terceros implementado en .NET 2.0 (en IIS, por supuesto).

Tengo que hacer un cliente java. Estoy usando wsdl2java para generar el código auxiliar SOAP.

Como el proyecto Apache Axis original ahora aparece sin mantenimiento, y estaba teniendo algunos problemas para analizar algunas respuestas del servicio, convertí el cliente para usar la última versión (1.5) de Axis2. Ahora, el servicio .NET ni siquiera reconocerá mis solicitudes.

Me las arreglé para obtener el "trozo" desactivado (donde " stub " es una variable de tipo MumbleStub generada por wsdl2java, y estoy mostrando lo que son varias líneas de código como una línea horrible aquí):

stub._getServiceClient().getOptions().setProperty( HTTPConstants.CHUNKED, Boolean.FALSE);

.. por lo que al menos el servicio reconoce mi solicitud AS una solicitud, aunque sea mala: " HTTP / 1.1 400 Solicitud incorrecta " es la respuesta ahora (a diferencia de una página de "introducción / resumen" que me ofrece un enlace al WSDL).

Noté que la solicitud del Eje (" 1 ") tenía un encabezado Content-TYpe diferente (text / xml, vs application / soap-xml), y me pregunto cómo cambiar este encabezado de solicitud, si eso está en hecho el problema.

Alternativamente, ¿alguien más ha tenido este problema? ¿Es realmente el problema el (no se puede visualizar aquí, ya que parece "inyección de elemento" para el motor del blog) ... versión xml- "1.0" ... " etiqueta de introducción meta XML " que Axis2 agregó al comienzo de la solicitud?

WS-Deathstar, de hecho.

¿Fue útil?

Solución

Como mencionas los diferentes encabezados de tipo de contenido, supongo que tu cliente intenta enviar solicitudes SOAP 1.2 y la aplicación de terceros solo comprende SOAP 1.1

Intente cambiar la versión de jabón usada ya que AFAIK AXIS2 usa SOAP 1.2 por defecto

stub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top