首先,我们要创建一个SOAP Service。下面是它的代码,请不要忘记将它放入HelloWorld/ 目录中(必须被包含在你的CLASSPATH中):
1: // SOAPService.java
2: package HelloWorld;
3: public class SOAPService {
4: public String sayHi(String x) {
5: return("Hello my friend, " + x + "! Glad to see you!");
6: }
7: }
添加任何注释也是很轻易的。要编译它,只需要用下列命令:
javac SOAPService.java
第二步,一旦我们预备好了SOAP Service,我们需要用SOAP Service Manager来部署它。这个可以通过很多方式来实现,但是为了能让初学SOAP的读者更轻易理解SOAP,我提供了一个最轻易的方式。我们假设你的Web Server(Tomcat或其他)已经正常运行,并且你已经正确安装了SOAP。那么当浏览器访问http://localhost:8080/soap/,你会看见Apache SOAP的欢迎页面。点击Run the admin client ,然后 Deploy。你会得到一个屏幕显示,在那里你需要填入ID,Scope,Method,Provider Type和JAVA Provider的信息到表单域中。你能忽略其他所有的表单域,除非你真的需要它们的信息。我们的“HelloWorld”例子不需要它们,所以,我们填的下面的值:
ID: urn:HelloWorld_SOAPService
Scope: Application
Methods: sayHi
Provider Type: java
Java Provider - Provider Class: HelloWorld.SOAPService
Java Provider - Static? No
一些注释:ID是我们要从SOAP Client标识我们的SOAP Service的唯一名字。Method包含SOAP Service提供的一系列方法。JAVA Provider-Provider Class是SOAP Service Java类的名字。
现在,点击Deploy 按钮,那么你的服务会被部署。再次强调,请注重正确设置CLASSPATH环境变量。然后,你的HelloWorld.SOAPService类能够被找到,并且所有必需的jar包也能被找到。这是个几乎每个人都会犯的普通错误。现在,你能够点击 List ,将会看见你的服务已经被部署进来。恭喜!
最后,让我们来创建一个SOAP Client。代码看起来有点复杂,但是在现实中不会只有这么点长。
1: // HelloWorldClient.java
2: import java.io.*;
3: import java.net.*;
4: import java.util.*;
5: import org.apache.soap.*;
6: import org.apache.soap.rpc.*;
7: public class HelloWorldClient {
8: public static void main(String[] arg) throws Exception {
9: Call c = null;
10: URL url = null;
11: Vector params = null;
12: Response rep = null;
13: String ourName = "Superman";
14: String ourUrn = "urn:HelloWorld_SOAPService";
15: String ourMethod = "sayHi";
16: url = new URL("http://localhost:8080/soap/servlet/
rpcrouter");
17: System.out.println("Passing to our deployed "+ourUrn+"
our name ("+ourName+"): ");
18: c = new Call();
19: c.setTargetObjectURI(ourUrn);
20: c.setMethodName(ourMethod);
21: c.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
22: params = new Vector();
23: params.addElement(new Parameter("ourName", String.class,
ourName, null));
24: c.setParams(params);
25: System.out.print("and its answer is: ");
26: rep = c.invoke(url, "");
27: if (rep.generatedFault()) {
28: Fault fault = rep.getFault();
29: System.out.println(" Call failed!");
30: System.out.printl
分享到:
相关推荐
### SOAP使用说明与SoapUI基础入门详解 #### 一、SOAP与SoapUI概述 SOAP (Simple Object Access Protocol) 是一种轻量级协议,用于在分布式环境中交换数据。它基于XML,能够通过多种传输协议(如HTTP)进行消息...
2. **创建SOAP请求**:使用`qtsoap::SoapRequest`类创建一个SOAP请求。你需要提供SOAP消息的XML格式,包括方法名、参数等。例如: ```cpp qtsoap::SoapRequest request("http://example.com/service", "MethodName...
本示例使用C#构造SOAP信息,通过HttpWebRequest调用java编写的带有Windows身份验证的WebService,代码中详细注释了每行代码的功能与作用; 对应文章:http://blog.csdn.net/cgs_______/article/details/77894599
SOAP Binding Framework 是一种规则集合,用于定义如何使用协议来传输 SOAP 消息。不同的绑定框架可以将 SOAP 消息传输到不同的协议上,如 HTTP、SMTP 等。 MTOM(Message Transmission Optimization Mechanism)是...
此外,SOAP使用XML命名空间来区分SOAP特定的元素和应用程序特定的元素。例如,"SOAP-ENV"与"http://schemas.xmlsoap.org/soap/envelope/"关联,用于表示SOAP消息的环境,而"SOAP-ENC"与...
5. **命名空间处理**: SOAP消息通常涉及多个命名空间,QtSoap使用`QtSoapQName`来处理这些命名空间。在创建`QtSoapType`或设置方法名时,需要指定正确的命名空间。 6. **类型映射**: QtSoap支持基本的数据类型映射...
为了确保消息的可读性和避免命名冲突,SOAP使用命名空间和前缀来标识不同的元素和属性。例如,“env”前缀对应于SOAP Envelope的命名空间,而“n”则用于“alertcontrol”的命名空间。这些前缀和对应的命名空间URI...
- **XML**:SOAP使用XML作为消息的编码格式,这不仅便于解析,也利于跨平台和跨语言的通信。 这种组合使得SOAP成为一种高效、灵活且易于实现的通信协议,适用于Web服务领域。 #### 五、SOAP的前景 尽管近年来出现...
5. **绕过防火墙**:由于SOAP使用HTTP协议进行传输,因此可以轻松地穿过大多数防火墙。 6. **使用HTTP**:SOAP利用HTTP作为传输层协议,这使得它可以在任何支持HTTP的地方使用。 #### 三、为何选择SOAP? - **解决...
8. **示例与文档**:虽然源代码本身提供了很多信息,但为了更好地使用 QtSOAP,开发者通常还需要参考官方文档或社区提供的示例代码,以便快速上手。 总之,QtSOAP 是一个强大的工具,让 Qt 开发者能够轻松地在他们...
同时,SOAP使用了一系列的名域前缀来关联特定的URI,例如“SOAP-ENV”与SOAP信封相关的URI关联,“SOAP-ENC”与编码规则关联,“xsi”与XSD实例规范关联,“xsd”与XSD规范关联。这些前缀有助于区分和组织XML文档中...
SOAP使用XML作为其消息格式的基础,这使得它具有高度的可读性和跨平台性。 #### 二、SOAP的组成部分 SOAP主要由以下四个部分组成: 1. **SOAP信封**:它定义了消息的基本结构,包括消息的头部和体部,以及消息的...
SOAP使用XML来编码RPC调用,将请求封装成XML文档,通过HTTP进行传输。这样,任何支持HTTP和XML解析的系统都能够理解和处理SOAP消息,降低了互操作的门槛。 SOAP的编码规则规定了消息结构,包括XML命名空间、SOAP头...
1. **消息格式**:SOAP使用XML作为消息格式,而REST通常通过HTTP协议使用JSON或XML。 2. **调用方式**:SOAP是基于远程过程调用(RPC)模型,而REST是资源导向的,通过HTTP方法(GET, POST, PUT, DELETE等)操作资源...
thinkphp内使用soap 把下载的soap解压放到ThinkPHP\Extend\Vendor目录下 名字是soap 调用方法: function test($url,$method,$data){ vendor('soap.class#nusoap'); //从soap目录导class.nusoap.php类文件 $...
SOAP 1.1 使用 "text/xml" 作为 Content-Type,而 SOAP 1.2 使用 "application/soap+xml"。这意味着 SOAP 1.2 的报头信息更为明确和详细,表明了请求体中的 XML 内容是 SOAP 消息。 其次,SOAP 1.2 不再使用 SOAP...
7. **调试与测试**: 在开发过程中,使用 Node.js 的调试工具和 SOAP 客户端(如 SoapUI)可以帮助你测试和调试 NSOAP 服务。 8. **文档生成**: 创建清晰的 SOAP WSDL(Web Service Definition Language)文档对于...
SOAP使用XML作为数据格式,因此还需要导入`msxml3.dll`来处理XML内容。此库提供了强大的XML解析功能,使得开发者可以轻松地操作SOAP消息中的XML数据。 #### 四、开发SOAP客户端应用程序 开发一个SOAP客户端应用程序...
- **Perl 中的 SOAP Web 服务:** 使用 Perl 创建 SOAP Web 服务时,可以利用 SOAP::Lite 模块来简化开发过程。 - **Java 中的 SOAP Web 服务:** 在 Java 中,Apache SOAP 工具包提供了强大的功能,可以帮助开发者...