利用soapui和jdk API访问webservice

继上一篇([url]http://redhacker.iteye.com/blog/1444508[/url])关于在jdk6下如何创建webservice之后,本篇将讲述如何利用jdk API结合soapui工具编写简单webservice访问。

一、启动hello webservice服务。启动方式参见[url=http://redhacker.iteye.com/blog/1444508]上篇博客[/url]

启动后效果如下:

[img]http://dl.iteye.com/upload/attachment/0064/5236/28e9a5b2-173f-3aef-beff-56c1558837a6.png[/img]

二、打开soapui工具。工具下载不再赘述。

[img]http://dl.iteye.com/upload/attachment/0064/5238/081b0142-c640-3a18-8101-fe227be6d93f.png[/img]

三、新建WSDL project。

[img]http://dl.iteye.com/upload/attachment/0064/5240/b7fdc6ad-b88a-3949-bf9c-cde77412b129.png[/img]

[img]http://dl.iteye.com/upload/attachment/0064/5242/61a3b0b9-50fd-3df2-87f4-a3231e9753c3.png[/img]

[img]http://dl.iteye.com/upload/attachment/0064/5246/2682b813-f2c1-3a2a-bae5-729eee798a51.png[/img]

四、发起ws请求,获取请求与返回报文。

[img]http://dl.iteye.com/upload/attachment/0064/5254/7bb6de1d-f7f3-347c-9a2f-00e44e746fc8.png[/img]

[img]http://dl.iteye.com/upload/attachment/0064/5256/8769639a-708c-3297-80d8-6d911a5bd314.png[/img]

[img]http://dl.iteye.com/upload/attachment/0064/5259/cfe99984-613c-3015-bd96-c145283c17c1.png[/img]

[img]http://dl.iteye.com/upload/attachment/0064/5261/344f1f1b-c2d9-3dd6-ad03-d39a6eb9b3f0.png[/img]

五、根据请求报文编写java请求程序。

[code]
package com.je.ws.client;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HelloServiceTest {

public static String HELLO_WS_URL = "http://127.0.0.1:8001/HelloServicePort";

// 调用WS
private static void testHelloService(String name) throws Exception,
IOException {

// 构建请求报文
StringBuffer sendMsgBuffer = new StringBuffer(
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:jav=\"http://www.javaedu.com\">");
sendMsgBuffer.append("<soapenv:Header/>").append("<soapenv:Body>")
.append("<jav:hello>").append("<arg0>").append(name)
.append("</arg0>").append("</jav:hello>")
.append("</soapenv:Body>").append("</soapenv:Envelope>");
String sendMsg = sendMsgBuffer.toString();

// 开启HTTP连接ַ
URL url = new URL(HELLO_WS_URL);
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();

// 设置HTTP请求相关信息
httpConn.setRequestProperty("Content-Length",
String.valueOf(sendMsg.getBytes().length));
httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.setDoInput(true);

// 进行HTTP请求
OutputStream outObject = httpConn.getOutputStream();
outObject.write(sendMsg.getBytes());

// 关闭输出流
outObject.close();

// 获取HTTP响应数据
InputStreamReader isr = new InputStreamReader(
httpConn.getInputStream(), "utf-8");
BufferedReader inReader = new BufferedReader(isr);
StringBuffer result = new StringBuffer();
String inputLine;
while ((inputLine = inReader.readLine()) != null) {
result.append(inputLine);
}

// 打印HTTP响应数据
System.out.println(result);

// 关闭输入流
inReader.close();
isr.close();
}

// 测试主方法
public static void main(String[] args) throws IOException, Exception {
testHelloService("jack");
}
}
[/code]


返回结果:

[code]
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:helloResponse xmlns:ns2="http://www.javaedu.com">
<return>Hello,jack</return></ns2:helloResponse>
</S:Body>
</S:Envelope>
[/code]

六、说明:获取到报文后,可用利用jdk自带的XML dom API或dom4j、jdom等API进行XML解析,获取您想要的数据。

[color=gray]如果您觉得本文对您有益,请点击博文后的google广告,对作者表示支持,谢谢![/color]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值