`
623deyingxiong
  • 浏览: 189935 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

axis客户端 调用 .NET(axmx)服务端

阅读更多
代码:
private boolean connect(String namespace, String endpoint, String function) {
		try {
			// 连接WS服务器
			call = (Call) service.createCall();
			// 设置调用方法
			call.setOperationName(new QName(namespace, function));
			// 设置服务器地址
			call.setTargetEndpointAddress(endpoint);
		} catch (ServiceException ex) {
			LOG.error("连接服务器(" + endpoint + ")失败", ex);
			return false;
		}
		return true;
	}
public boolean dmisQuery(String endpoint, String namespace, String function, String start,
			String until,String GID) {
		//LOG.info("测试调用:" + endpoint + ", 接口方法:" + function + ", " + "发送者:" + sender);
		// 连接服务端
		if (!connect(namespace, endpoint, function))
			return false;
		
		
		boolean result = false;

		try {
			Object data = call.invoke(new Object[] {GID,start,until});
			
			// 解析数据
			String source = new String(Base64.decode((String) data));
			LOG.info("查询结果:" + (String) data);
			//Response response = unmarshal(source);
			//LOG.info("数据状态:" + response.getStatus());
//		} catch (JAXBException ex) {
//			LOG.error("格式化XML失败", ex);
		} catch (RemoteException ex) {
			LOG.error("查询(" + endpoint + ")失败", ex);
		}
		
		return result;
	}

public static void main(String[] args){
  impl.dmisQuery("http://10.50.11.190/MWWebSite/ProjectHome/WebService/WebSer_TY_GJ.asmx", "http://tempuri.org/", "GetData", "2012-08-01 00:00:00", "2012-08-01 00:00:00","");
}



注意上面的地址http://10.50.11.190/MWWebSite/ProjectHome/WebService/WebSer_TY_GJ.asmx后缀是"asmx",表明这个地址代表的服务端是.NET架构的。

报错:
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Client
 faultSubcode: 
 faultString: System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 头 SOAPAction 的值: 。
   在 System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
   在 System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
   在 System.Web.Services.Protocols.SoapServerProtocol.Initialize()
   在 System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)


解决办法:
修改connect方法,针对.NET的webservice服务端,axis客户端调用时加上
call.setSOAPActionURI(namespace+function);

修改后如下:
private boolean connect(String namespace, String endpoint, String function) {
		try {
			// 连接WS服务器
			call = (Call) service.createCall();
			// 设置调用方法
			call.setOperationName(new QName(namespace, function));
			// 设置服务器地址
			call.setTargetEndpointAddress(endpoint);
                           

/******************针对.NET服务端webservice这些个代码都是必须的*******************/
call.addParameter(new QName("http://tempuri.org/","GID"), 
                org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
		call.addParameter(new QName("http://tempuri.org/","start"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
		call.addParameter(new QName("http://tempuri.org/","until"),org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);

		 call.setReturnType(org.apache.axis.encoding.XMLType.SOAP_STRING); 
		
		call.setUseSOAPAction(true);
		
		call.setSOAPActionURI("http://tempuri.org/GetData");
/******************针对.NET服务端webservice这些个代码都是必须的*******************/		
		} catch (ServiceException ex) {
			LOG.error("连接服务器(" + endpoint + ")失败", ex);
			return false;
		}
		return true;
	}

分享到:
评论

相关推荐

    axis2客户端调用axis1服务接口

    axis2客户端调用axis1服务接口 调用方式 使用RPC方式调用WebService,为了防止冲突可以增加 // 与weblogic的lib冲突配置 System.setProperty("javax.xml.stream.XMLInputFactory", ...

    cxf客户端调用axis服务端流程

    总之,使用CXF客户端调用Axis服务端涉及多个步骤,包括生成客户端代码、配置客户端、创建服务代理以及进行实际调用。理解这些步骤并正确实现它们是成功通信的关键。在实际开发过程中,可能会遇到各种问题,需要耐心...

    axis2客户端调用服务端,带用户身份认证

    当涉及到“axis2客户端调用服务端,带用户身份认证”时,我们主要关注的是如何在 Axis2 客户端中添加安全机制,确保只有经过验证的用户能够访问服务。 首先,理解身份认证是网络安全的基础。在Web服务中,通常采用...

    Axis客户端调用代码

    本文将深入探讨如何使用Axis客户端进行调用,以及如何利用WSDL2JAVA工具生成客户端代码。 标题中的"Axis客户端调用代码"指的是使用Axis库来实现对Web服务的调用。Axis提供了Java客户端API,使得开发人员能够通过...

    axis客户端调用webservice

    java axis客户端调用webservice,可应用于ofbiz框架。 解决网络上共享代码两次调用后会出现timeout的BUG

    WebService:Axis客户端调用需要身份验证的CXF服务

    在本场景中,我们关注的是Axis客户端如何调用需要身份验证的CXF服务。Axis是一个开放源码的SOAP栈,常用于创建和部署Web服务,而CXF则是一个更现代的Java框架,也用于构建和消费Web服务,支持WS-Security等高级特性...

    使用axis1.2调用.net webservice

    以前看别人写的,似乎都比较复杂,而且没有提供一个webservice供初学者测试,我找了一个http://www.webservicex.net/globalweather.asmx,根据这个写了一个例子,让新学的少走一些弯路吧

    axis2客户端调用webService接口,精简jar包

    本文将深入探讨如何使用Axis2客户端调用WebService接口,并且会特别关注如何精简所需的jar包。 首先,了解Axis2客户端的基本概念是至关重要的。Axis2客户端是用于与远程Web服务交互的工具,它允许开发者通过SOAP...

    java axis 调用 .net webservice 短信收发

    Axis是Apache软件基金会开发的一个开放源代码SOAP客户端和服务端的实现,它允许Java开发者轻松地创建和部署Web服务。通过Axis,Java应用程序可以调用远程的Web服务,就像调用本地方法一样简单。 在本例中,我们面临...

    客户端通过axis调用服务端发布的服务类

    标题中的“客户端通过axis调用服务端发布的服务类”指的是在分布式系统开发中,客户端应用程序如何利用Apache Axis框架来调用服务端提供的Web服务。Apache Axis是一个开源工具,主要用于实现SOAP(Simple Object ...

    AXIS2作为客户端调用webService的demo

    用AXIS2作为客户端调用webService的demo:本人亲测可用,eclipse工程java项目包含完整代码和完整jar包, 只要用eclipse导入项目即可,运行控制台显示success或者false字符串,说明OK。

    webservice-axis2客户端调用(多参).txt

    之前webservice客户端调用,使用RPC客戶端接口调用方法,但发现此种调用方式针对携参方式并不适用。最后经过多种方式测试选择了OMFactory......调用。经测试好用

    java采用axis调用.net写的WebService

    java采用axis调用.net写的WebService,WebService的参数有传人和传出,传出的参数为ref,java端ParameterMode.OUT,传人的为ParameterMode.IN,WebService返回值为String,java利用Map取传出参数,对Map进行遍历取得...

    axis2生成客户端服务端代码

    ### Axis2生成客户端与服务端代码详解 #### 一、Axis2简介 Axis2是Apache组织下的一个开源项目,它是一种高性能、轻量级的Web服务框架,支持SOAP和REST等协议,能够帮助开发者轻松地构建和部署Web服务。Axis2提供了...

    基于Axis的Web Service客户端调用

    【标题】基于Axis的Web Service客户端调用 在IT领域,Web Service是一种通过网络进行通信的标准协议,它允许不同系统间的应用程序互相交换数据。而Apache Axis是Java平台上的一个开源工具,专门用于创建和部署Web ...

    java调用.net发布的webservice(asmx)

    Java调用.NET ASMX Web服务的核心在于生成对应的客户端代理类。这个过程可以通过Apache CXF、 Axis2等开源工具完成,或者手动构造SOAP请求。以下是使用Apache CXF生成代理类的步骤: 1. 添加CXF依赖:在Java项目的...

    基于axis2实现的webservice简单实现(客户端+服务端)。

    总的来说,这个压缩包提供了一个完整的基于Axis2的Web服务实现示例,包括服务端创建服务和客户端调用服务的所有必要组件。通过学习和理解这些文件,开发者可以更好地掌握如何在实际项目中利用Apache Axis2构建和使用...

    AXIS2客户端调用实例

    在本文中,我们将深入探讨如何使用AXIS2客户端进行服务调用,包括AXIS2的基本概念、配置、服务引用以及调用流程。 **AXIS2简介** AXIS2是Apache软件基金会开发的一个强大的Web服务引擎,它支持多种协议,如SOAP 1.1...

    java程序调用.net/c#的webservice

    Java程序调用.NET/C#的Web服务是一种跨平台的交互方式,主要依赖于SOAP(Simple Object Access Protocol)协议,使得不同编程语言开发的应用程序能够相互通信。在本场景中,用户已经提供了一个.NET的Web服务,而我们...

Global site tag (gtag.js) - Google Analytics