中科院架构师,专注企业数字化各个方面,MES/ERP/CRM/OA、物联网、传感器、大数据、ML、AI、云计算openstack、Linux、SpringCloud。
分类: 网络与安全
2014-11-11 08:18:53
org.apache.soap.rpc.Parameter;
org.apache.soap.rpc.Response;
(1)HelloWorldService.java是服务器端的程序,其代码如下。这个程序中只有一个方法,和其他Java程序没有什么差别,该方法也也很简单就是返回一个HelloWorld字符串
package com.hiyachen.soap.hello;
public class HelloWorldService {
public String getMessage() {
return "Hello World!";
}
}
(2)HelloWorldClient.java是客户端的访问程序,其代码如下:
package com.hiyachen.soap.hello;
import java.net.URL;
import org.apache.soap.Constants;
import org.apache.soap.Fault;
import org.apache.soap.rpc.Call;
import org.apache.soap.rpc.Parameter;
import org.apache.soap.rpc.Response;
public class HelloWorldClient {
public static void main(String args[]) throws Exception {
String endPoint = "";
Call call = new Call();//创建一个RPC Call
call.setTargetObjectURI("urn:HelloWorldService");//远程的服务名
call.setMethodName("getMessage");//访问方法
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC); //设置编码风格
URL url = new URL(endPoint); //SOAP服务的网址
//开始发送RPC请求,并返回服务器端的应答
Response resp = call.invoke(url, "");
//检查应答报文中是否有错
//有错就打印出错信息,没错就打印到正确的返回值HelloWorld
if (resp.generatedFault()) {
Fault fault = resp.getFault();
System.out.println("The Following Error Occured: ");
System.out.println(" Fault Code = " + fault.getFaultCode());
System.out.println(" Fault String =" + fault.getFaultString());
} else {
Parameter result = resp.getReturnValue();
System.out.println(result.getValue());
}
}
}
这个程序的用到了很多SOAP的类。注意:如果是两台电脑的话,那么HelloWorldService.java和HelloWorldClient.java是分别独立安装在两台电脑上的,HelloWorldClient中的程序代码就是通过SOAP服务来调用HelloWorldService中的getMessage方法。