Web Services的两种访问方法RPC与SOAP

目录:

1、RPC请求样例

2、SOAP请求样例

3、完整请求样例

内容:

1、RPC请求样例

    RPC请求Java代码:

2、SOAP请求样例

//service服务对象
		Service service = (Service) Class.forName("org.apache.axis.client.Service").newInstance();
		Call call = service.createCall();
		//设置请求目标地址
		call.setTargetEndpointAddress(RquestConstant.ENDPOINT);
		QName qname = new QName(null,RquestConstant.METHOD_NAME);
		//设置请求目标方法
		call.setOperationName(qname);
		//定义存储认证用户信息对象
		Map<String, String> header = new Hashtable<String, String>();
		header.put(Call.USERNAME_PROPERTY, RquestConstant.PUBLIC_USER);
		header.put(Call.PASSWORD_PROPERTY, RquestConstant.PUBLIC_PASSWORD);
        //将认证信息放入调用对象的属性中
		call.setProperty(HTTPConstants.REQUEST_HEADERS, header);
	    Object ret = call.invoke(arguments);
	    //打印调用结果
	    System.out.println(ret);

 

SOAP请求Java代码:

 

 

//SOAP连接工厂
		SOAPConnectionFactory soapConnFactory = SOAPConnectionFactory.newInstance();
		//soap工厂
		SOAPFactory soapFactory = SOAPFactory.newInstance();
		//消息工厂
		MessageFactory factory = MessageFactory.newInstance();
		SOAPBody soapBody = null;
		SOAPConnection conn = null;
		try{
			//创建soap连接
			conn = soapConnFactory.createConnection();
			//创建消息
			SOAPMessage message = factory.createMessage();
			//读取消息构件
			SOAPPart soapPart = message.getSOAPPart();
			//读取消息壳
			SOAPEnvelope envelope = soapPart.getEnvelope();
			//读取消息体
			SOAPBody body = envelope.getBody();
			//请求方法对象
			Name requestMethodName = soapFactory.createName(RquestConstant.METHOD_NAME);
			//将请求方法对象添加到消息体中
			SOAPBodyElement requestMethodElement = body.addBodyElement(requestMethodName);
			//为请求构造参数对象
			Name parameterIn = soapFactory.createName("in0");
			//将参数添加到请求方法对象中
			SOAPElement parameterEle = requestMethodElement.addChildElement(parameterIn);
			//赋值给参数
			parameterEle.addTextNode(arguments);
			//添加用户认证信息
			MimeHeaders hd = message.getMimeHeaders();
			hd.addHeader(Call.USERNAME_PROPERTY, RquestConstant.PUBLIC_USER);
			hd.addHeader(Call.PASSWORD_PROPERTY, RquestConstant.PUBLIC_PASSWORD);
			//使所有更改生效
			message.saveChanges();
			//将此消息对象写入给定输出流
			message.writeTo(System.out);
			//包装目标地址
			URL endpoint = new URL(RquestConstant.ENDPOINT);
			//发生请求
			SOAPMessage response = conn.call(message, endpoint);
			//读取结果
			soapBody = response.getSOAPBody();
		}catch(Exception e){
			throw e;
		}finally{
			conn.close();
		}
		System.out.println("消息内容:" + soapBody);

 

3、完整请求样例

    见附件,所需要jar包与Web Service附加身份认证样例jar包相同。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值