java调用C# 写的WebService接口

错误:服务器未能识别 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());
        }
        
    }
   
}

```望采纳。可能大家都会用得上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值