WSDL真的好简单,而且确实做到了跨语言,按规范来,代码简洁,调用方便。。
你用PHP创建了WS,要Java调用,我就反着来,给你个Java创建+PHP调用的例子,让你两种语言的创建和调用WS都熟悉下。我这里用Java写了个WS,HelloWorld.java,这里对外提供了一个服务
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import javax.jws.WebMethod;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;@WebService(targetNamespace = "http://localhost/client")@SOAPBinding(style = SOAPBinding.Style.RPC)public class HelloWorld { @WebMethod public String sayHelloWorldFrom(String p1, String p2) { String result = "Hello, world, from " + p1 + " and " + p2; System.out.println(result); return result; }} |
然后我发布它,写个StartService.java
|
1
2
3
4
5
6
7
|
import javax.xml.ws.Endpoint;public class StartService { public static void main(String[] args) { Endpoint.publish("http://localhost:8080/HelloWorldService", new HelloWorld()); }} |
是不是很简洁啊,不到20行代码啊。编译这两个类,运行
java StartService
然后访问:http://localhost:8080/HelloWorldService ,就能看到服务了,还能看到WSDL文件,然后PHP访问,
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<?phpheader("Content-Type: text/html; charset=GBK");class sayHelloWorldFromResponse{ public $return;}class sayHelloWorldFrom{public $arg0;public $arg1;public function __construct($arg0,$arg1) { $this->arg0=$arg0; $this->arg1=$arg1;}}class webS { public function __construct() { $this->client=new SoapClient("http://localhost:8080/HelloWorldService?wsdl", array('classmap' =>array('sayHelloWorldFromResponse'=>'sayHelloWorldFromResponse','sayHelloWorldFrom'=>'sayHelloWorldFrom'), 'encoding'=>'GBK', 'location' =>"http://localhost:8080/HelloWorldService?wsdl",'uri'=>"http://localhost/client","trace" => 1,"exception"=>true )); } public function say($a,$b){ $ret1=$this->client->sayHelloWorldFrom($a,$b); return $ret1; } }$ws=new webS();var_dump($ws->say('刘惜君','张韶涵')); |
0
引用来自“南湖船老大”的评论
WSDL真的好简单,而且确实做到了跨语言,按规范来,代码简洁,调用方便。。
你用PHP创建了WS,要Java调用,我就反着来,给你个Java创建+PHP调用的例子,让你两种语言的创建和调用WS都熟悉下。我这里用Java写了个WS,HelloWorld.java,这里对外提供了一个服务
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import javax.jws.WebMethod;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;@WebService(targetNamespace = "http://localhost/client")@SOAPBinding(style = SOAPBinding.Style.RPC)public class HelloWorld { @WebMethod public String sayHelloWorldFrom(String p1, String p2) { String result = "Hello, world, from " + p1 + " and " + p2; System.out.println(result); return result; }} |
然后我发布它,写个StartService.java
|
1
2
3
4
5
6
7
|
import javax.xml.ws.Endpoint;public class StartService { public static void main(String[] args) { Endpoint.publish("http://localhost:8080/HelloWorldService", new HelloWorld()); }} |
是不是很简洁啊,不到20行代码啊。编译这两个类,运行
java StartService
然后访问:http://localhost:8080/HelloWorldService ,就能看到服务了,还能看到WSDL文件,然后PHP访问,
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<?phpheader("Content-Type: text/html; charset=GBK");class sayHelloWorldFromResponse{ public $return;}class sayHelloWorldFrom{public $arg0;public $arg1;public function __construct($arg0,$arg1) { $this->arg0=$arg0; $this->arg1=$arg1;}}class webS { public function __construct() { $this->client=new SoapClient("http://localhost:8080/HelloWorldService?wsdl", array('classmap' =>array('sayHelloWorldFromResponse'=>'sayHelloWorldFromResponse','sayHelloWorldFrom'=>'sayHelloWorldFrom'), 'encoding'=>'GBK', 'location' =>"http://localhost:8080/HelloWorldService?wsdl",'uri'=>"http://localhost/client","trace" => 1,"exception"=>true )); } public function say($a,$b){ $ret1=$this->client->sayHelloWorldFrom($a,$b); return $ret1; } }$ws=new webS();var_dump($ws->say('刘惜君','张韶涵')); |

浙公网安备 33010602011771号