错误:服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org/QueryUserName。
System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org/GetSDCities。
在 System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
在 System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
在 System.Web.Services.Protocols.SoapServerProtocol.Initialize()
在 System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
在 System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:251)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:168)
at org.apache.axis.encoding.DeserializationContextImpl.endElement(DeserializationContextImpl.java:1001)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:242)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:538)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
at org.apache.axis.client.Call.invokeEngine(Call.java:2545)
at org.apache.axis.client.Call.invoke(Call.java:2515)
at org.apache.axis.client.Call.invoke(Call.java:2210)
at org.apache.axis.client.Call.invoke(Call.java:2133)
at org.apache.axis.client.Call.invoke(Call.java:1656)
at com.avis.test.AvisDemo.testDemo4(AvisDemo.java:137)
at com.avis.test.AvisDemo.main(AvisDemo.java:149)
在项目中遇到一个java调用C# 写的WebService接口,对方系统没有提供java调用demo。
写了好多种方法就是不通,一直报错未能识别。
下面配了能够识别的调用demo
package com.cn.hauk;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.message.MessageElement;
import org.apache.axis.types.Schema;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
public class HttpUtil {
public static void main(String[] args) {
getWebService();
}
public static void getWebService() {
try {
String endpoint = "http://10.0.1.9:8900/GEPS/Integration/DJJC/WebService/IntegrateService.asmx?wsdl";
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName(new QName("http://tempuri.org/", "SyncBill"));
call.setSOAPActionURI("http://tempuri.org/SyncBill");
//call.setOperationName("SyncBill");//WSDL里面描述的接口名称
call.addParameter(new QName("http://tempuri.org/", "key"),// 这里的str对应webservice参数名称
XMLType.SOAP_STRING, ParameterMode.IN);
call.addParameter(new QName("http://tempuri.org/", "strData"),// 这里的str对应webservice参数名称
XMLType.SOAP_STRING, ParameterMode.IN);
call.addParameter(new QName("http://tempuri.org/", "moduleCode"),// 这里的str对应webservice参数名称
XMLType.SOAP_STRING, ParameterMode.IN);
call.addParameter(new QName("http://tempuri.org/", "opType"),// 这里的str对应webservice参数名称
XMLType.SOAP_STRING, ParameterMode.IN);
call.setReturnType(XMLType.XSD_SCHEMA);//设置返回类型
org.apache.axis.types.Schema obj=(Schema) call.invoke(new Object[]{"123qwe)(*&^54321","XXX","GEPS.Material.Purchase.CLFKSQDModule","Edit"});
MessageElement[] get_any = obj.get_any();
System.out.println(get_any[0]);
} catch (Exception e) {
System.err.println(e.getMessage());
}
}
}
```望采纳。可能大家都会用得上