JAVA调用PHP SOAP服务方法

php中文网
发布: 2016-06-20 13:00:56
原创
1138人浏览过

java调用php soap服务

WebService即是一种跨平台的远程调用方法。一方提供服务,另一方使用服务。传输协议是HTTP,而传输的数据则是XML格式的数据。

它有两种方式,WSDL和SOAP。目前仅提及SOAP。

1.PHP提供SOAP服务

定义一个类,它里面有加、减和除三种操作

立即学习PHP免费学习笔记(深入)”;

启科网络PHP商城系统
启科网络PHP商城系统

启科网络商城系统由启科网络技术开发团队完全自主开发,使用国内最流行高效的PHP程序语言,并用小巧的MySql作为数据库服务器,并且使用Smarty引擎来分离网站程序与前端设计代码,让建立的网站可以自由制作个性化的页面。 系统使用标签作为数据调用格式,网站前台开发人员只要简单学习系统标签功能和使用方法,将标签设置在制作的HTML模板中进行对网站数据、内容、信息等的调用,即可建设出美观、个性的网站。

启科网络PHP商城系统 0
查看详情 启科网络PHP商城系统

 

<?php 
class Operator{
    public function add($x,$y){
        return $x+$y;
    }
    public function substract($x,$y){
        return $x-$y;
    }
    public function divide($x,$y){
        return $x/$y;
    }
}
?>
登录后复制


使用PHP SOAP API,提供SOAP服务。(需要开启SOAP EXTENSION)

 

<?php 
require("Operator.php");
$server = new SoapServer(null,array('uri' => "http://localhost:8089"));
$server->setClass("Operator");
$server->handle();
?>
登录后复制


假设提供服务的php为index.php

2.JAVA使用PHP提供的SOAP服务

 

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.Node;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;
public class Main {
	public void testSOAP(String opename,int x,int y){
		String url = "http://localhost:8089/index.php";
		SOAPConnectionFactory soapConnectionFactory = null;
		SOAPConnection soapConnection = null;
		MessageFactory messageFactory = null;
		SOAPMessage soapMessage = null;
		SOAPPart soapPart = null;
		SOAPEnvelope soapEnvelope = null;
		SOAPBody body = null;
		try{
			//建立连接
			soapConnectionFactory = SOAPConnectionFactory.newInstance();
			soapConnection = soapConnectionFactory.createConnection();
			messageFactory = MessageFactory.newInstance();
			soapMessage = messageFactory.createMessage();
			soapPart = soapMessage.getSOAPPart();
			soapEnvelope = soapPart.getEnvelope();
		
			//设置调用的webservice方法,及传参
			body = soapEnvelope.getBody();
			SOAPElement element = body.addChildElement(soapEnvelope.createName(opename));
			element.addChildElement("in0").addTextNode(String.valueOf(x));
			element.addChildElement("in1").addTextNode(String.valueOf(y));
			soapMessage.saveChanges();
			
			//获取返回值
			SOAPMessage reply = soapConnection.call(soapMessage,url);
			soapPart = reply.getSOAPPart();
			soapEnvelope = soapPart.getEnvelope();
			body = soapEnvelope.getBody();
			Node returnvalue = (Node) body.getChildElements().next();
		
			if (returnvalue != null) {
	              if (returnvalue.getChildNodes().item(0).getNodeName().equals("return")) {
		              List<HashMap<String,String>> ReturnArray = new ArrayList<HashMap<String,String>>();
		              for (int i=0;i<returnvalue.getChildNodes().item(0).getChildNodes().getLength();i++) {
		            	  String key = returnvalue.getChildNodes().item(0).getChildNodes().item(i).getNodeName();
		            	  String value = returnvalue.getChildNodes().item(0).getChildNodes().item(i).getNodeValue();
		            	  System.out.println(key+":"+value);
		              }
	              }
	        } else {
	              System.out.println("nothing returned");
	        }
		}catch(Exception ex){
			ex.printStackTrace();
		}finally{
			try {
				soapConnection.close();
			} catch (SOAPException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	
	public static void main(String[] args) {
		Main main = new Main();
		System.out.println("3+4:");
		main.testSOAP("add",3,4);
		System.out.println("9-7:");
		main.testSOAP("substract",9,7);
		System.out.println("20/4:");
		main.testSOAP("divide",20,4);
	}
}
登录后复制


运行结果如下:

3+4:
#text:7
9-7:
#text:2
20/4:
#text:5


相关标签:
php
PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号