JAVA调用PHP SOAP服务方法

WBOY
Freigeben: 2016-06-20 13:00:56
Original
1033 Leute haben es durchsucht

JAVA调用PHP SOAP服务

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

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

1.PHP提供SOAP服务

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

 

<?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;
    }
}
?>
Nach dem Login kopieren


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

 

<?php require("Operator.php");
$server = new SoapServer(null,array('uri' => "http://localhost:8089"));
$server->setClass("Operator");
$server->handle();
?>
Nach dem Login kopieren


假设提供服务的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>> ReturnArray = new ArrayList<hashmap>>();
		              for (int i=0;i<returnvalue.getchildnodes string key="returnvalue.getChildNodes().item(0).getChildNodes().item(i).getNodeName();" value="returnvalue.getChildNodes().item(0).getChildNodes().item(i).getNodeValue();" system.out.println else returned ex ex.printstacktrace try soapconnection.close catch e todo auto-generated block e.printstacktrace public static void main args main.testsoap>

<p><br>
运行结果如下:</p>

<p>3+4:<br>
#text:7<br>
9-7:<br>
#text:2<br>
20/4:<br>
#text:5</p>
<p class="item-note"><br></p></returnvalue.getchildnodes></hashmap></hashmap>
Nach dem Login kopieren
Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage