- jordan shoes for sale
- 16370
|
¿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" ; 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 pruebaSiguiente:Consul HTTP llamadas de interfaz de la API
|