架构师_程序员_码农网

N Recuperar contraseña
Registrarse

QQ登录

Sólo un paso para empezar

Buscar en
Vistas:14994|Respuestas: 0
打印 上一主题 下一主题

[ Información]Llamada Java al servidor c# webservice no reconoce el valor de la cabecera HTTP SOAPAction

[ Copiar enlace]
c# webservice
A 跳转到指定楼层
propietario del edificio
发表于 2021-3-4 13:19:39|只看该作者回帖奖励|Navegar hacia atrás |Modo de lectura
¿Por qué java llamada C # webservice informó de que el servidor no pudo identificar el valor de la cabecera SOAPAction http, siempre dejar que C # cambio, sólo porque C # sólo tiene que añadir una etiqueta, ¿por qué JAVA no puede especificar la solicitud de acción?



La publicación e invocación de Webservice es muy sencilla, pero aún persisten pequeños problemas que se resumen a continuación:

Llamada Java .net webService generó error "el servidor no pudo reconocer el valor de la cabecera HTTP SOAPAction".

Solución:

Al llamar al webservice, no se especifica SoapAction, ni RequestNameSpace, por lo que siempre aparece la petición "The server failed to recognise the value of the SOAPAction in the HTTP header".

Si está utilizando axis, realice la llamada de la siguiente manera:


public static void main(String[] args) throws Exception {
//sin sufijo ?wsdl
String endpoint = "http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx";
//Crear un servicio(service) llamar(call)
Service servicio = new Servicio();
// Crear un objeto call a partir del servicio
Call call = (Call) service.createCall(); // Crear un objeto call por servicio.
// Establecer la URL donde se encuentra el servicio
call.setTargetEndpointAddress(new java.net.URL(endpoint));; //qqCheckOn = (Call) service.createCall(); // Establece la URL del servicio.
//qqCheckOnline es la red por allí método "http://WebXml.com.cn/" esto también es necesario prestar atención a la dirección del espacio de nombres, no traen también informará de errores
call.setOperationName(new QName("http://WebXml.com.cn/", "qqCheckOnline")); //qqCheckOnline es un método neto "http://WebXml.com.cn/" Esto también debe prestar atención a la dirección del Namespace, sin ella también informará de errores.
//qqCode es también el nombre del parámetro del método en el lado .NET, es decir, el nombre del parámetro de qqCheckOnline
call.addParameter(new QName("http://WebXml.com.cn/", "qqCode"), .
org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);;
// Evitar que las llamadas Java al webService de .net generen errores del tipo "Server failed to recognise the value of the SOAPAction in the HTTP header".
call.setUseSOAPAction(true); call.setReturnType(true)
call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); //Tipo del parámetro de retorno.
call.setSOAPActionURI("http://WebXml.com.cn/qqCheckOnline"); //También hay que tener en cuenta que hay que añadir el método Add, de lo contrario también informará de un error.
// El array Object encapsula los parámetros
String ret = (String) call.invoke(new Object[] {"aaaa"}); System.out.println()
System.out.println("--------"+ret); }
}

Observe la sección de comentarios.

http://webservice.webxml.com.cn/webservices/qqOnlineWebService.asmx? wsdl para webservice público

Se produce la siguiente excepción cuando se utiliza wsdl2java.bat de CXF para generar una llamada de cliente a .net para publicar un webservice basado en un archivo wsdl


( declaración de elemento no definida 's:schema')

Solución:

Abra wsdl.xml y utilice el método


<s:any minOccurs="2" maxOccurs="2"/> en lugar de <s:element ref="s:schema" /><s:any />
Este error de generación de wsdl2java debería estar relacionado con el hecho de que JAXB no soporta refs xml porque <s:any minOccurs="2" maxOccurs="2"/> y <s:element ref="s: schema" /><s:element ref="s: schema" /><s:element ref="s: schema" /><s:element ref="s: schema" /><s:element ref="s: schema" /><s:element ref="s: schema" /><s:element ref="s: schema" />. schema" /><s:any /> son realmente equivalentes. <s:element ref="s:schema" /> en realidad significa que cualquiera de los tipos de elementos especificados por s:schema puede utilizarse aquí en su lugar, y <s:any /> hace exactamente eso, <s:any minOccurs="2&quot ; maxOccurs="2"/> no es más que dos <s:any />s escritos como una frase.

en una sola frase.

Consulte http://blog.sina.com.cn/s/blog_a53901340101cnt5.html

El uso de wsdl2java.bat de CXF para generar un super de compilación del lado del cliente basado en un archivo wsdl da un error.

Solución:

Su no compilado correctamente a través de es debido a jax-ws2.2 estatuto y java6 conflicto.

Pero el programa no sólo se puede compilar con java5, por lo que necesita para reducir la versión jax-ws estatuto, usted puede hacer esto: Ejecute el comando

wsdl2java -frontend jaxws21 -cliente *.xml

De esta manera el código generado con jax-ws2.1 puede ser compilado en java6 y puede ser ejecutado.

He utilizado la herramienta de comparación de texto para comparar el código de los dos clientes generados, se encontró que el código de este último cliente generado más de 3 constructores, por lo que el error será reportado en la eliminación de 3 constructores también puede resolver el problema anterior.

Obtenido de http://www.cheerfulstudy.com/Article?newsid=1128




Artículo anterior .NET/C# utilizando BenchmarkDotNet rendimiento del código de prueba
Siguiente:Consul HTTP llamadas de interfaz de la API
NET, sólo se publica en el proceso de la práctica, se encontró con dificultades técnicas, no engañar a los demás.
Tienes que iniciar sesión antes de poder volver a publicar Iniciar sesión | Registrarse

E sta versión de las normas integrales


DESCARGO DE RESPONSABILIDAD: Todo el software, materiales de programación o artículos publicados por Code Farmer se limitan a ser utilizados únicamente para fines de aprendizaje e investigación; los contenidos anteriores no podrán ser utilizados con fines comerciales o ilegales, de lo contrario, todas las consecuencias serán asumidas por los propios usuarios. Esta información del sitio de la red, disputa de derechos de autor no tiene nada que ver con este sitio. Debe eliminar completamente el contenido anterior de su ordenador en las 24 horas siguientes a la descarga. Si le gusta el programa, por favor apoye el software genuino, compre el registro y obtenga un mejor servicio genuino. Si se produce alguna infracción, póngase en contacto con nosotros por correo electrónico para solucionarla.

Correo To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-18 13:14

Respuesta rápidaVolver arribaVolver a la lista