Java实现不同的WebService 调用方式
请求过程分析:
  1.使用get方式获取wsdl文件,称为握手
          2.使用post发出请求
          3.服务器响应成功
  
几种监听工具:
      http watch
      Web Service explorer
      eclipse 自带工具   TCP/IP Monitor
一.客户端调用(wximport自动生成代码 【推荐】)
 public class App {
     /**
      * 通过wsimport 解析wsdl生成客户端代码调用WebService服务
      * @param args
      */
     public static void main(String[] args) {
         /**
          * <service name="MyService">
          * 获得服务名称
          */
         MyService mywebService = new MyService();
         /**
          * <port name="HelloServicePort" binding="tns:HelloServicePortBinding">
          */
         HelloService hs = mywebService.getHelloServicePort();
         /**
          * 调用方法
          */
         System.out.println(hs.sayGoodbye("sjk"));
         System.out.println(hs.aliassayHello("sjk"));
     }
 }
二.通过ajax+js+xml调用
<html>
<head>
<title>通过ajax调用WebService服务</title>
<script>
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
function sendMsg(){
var name = document.getElementById('name').value;
//服务的地址
var wsUrl = 'http://192.168.1.100:6789/hello';
//请求体
var soap = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.itcast.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">' +
' <soapenv:Body> <q0:sayHello><arg0>'+name+'</arg0> </q0:sayHello> </soapenv:Body> </soapenv:Envelope>';
//打开连接
xhr.open('POST',wsUrl,true);
//重新设置请求头
xhr.setRequestHeader("Content-Type","text/xml;charset=UTF-8");
//设置回调函数
xhr.onreadystatechange = _back;
//发送请求
xhr.send(soap);
} function _back(){
if(xhr.readyState == 4){
if(xhr.status == 200){
//alert('调用Webservice成功了');
var ret = xhr.responseXML;
var msg = ret.getElementsByTagName('return')[0];
document.getElementById('showInfo').innerHTML = msg.text;
//alert(msg.text);
}
}
}
</script>
</head>
<body>
<input type="button" value="发送SOAP请求" onclick="sendMsg();">
<input type="text" id="name">
<div id="showInfo">
</div>
</body>
</html>
三.URL Connection方式
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
/**
* 通过UrlConnection调用Webservice服务
*
*/
public class App {
public static String getDataByConnectUrl(String ssoUrl){
try {
URL url = new URL(ssoUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setInstanceFollowRedirects(false);
con.setUseCaches(false);
con.setAllowUserInteraction(false);
con.connect();
StringBuffer sb = new StringBuffer();
String line = "";
BufferedReader URLinput = new BufferedReader(new InputStreamReader(con.getInputStream(),"UTF-8"));
while((line=URLinput.readLine()) != null){
sb.append(line);
}
con.disconnect();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return sb.toString();
}
}
四.单编程方式(和第一种方式一样)
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
class App{
private void incomeService() {
String xmlStr = "xmlData";//xml格式的参数数据拼成的字符串
String url = "http://127.0.0.1:8080/webProject/services/systemDDLService";/wsdl地址
String method="incomeJC";
String webObject = null;
try {
RPCServiceClient serviceClient = new RPCServiceClient();
Options options = serviceClient.getOptions();
EndpointReference targetEPR = new EndpointReference(url);
options.setTo(targetEPR);
QName opAddEntry = new QName("http://org.tempuri",method);
Object[] opAddEntryArgs = new Object[] {xmlStr};
Class[] classes = new Class[] { String.class };
webObject = (String)serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
System.out.println(webObject);
}catch (Exception e) {
e.printStackTrace();
long end = System.currentTimeMillis();
}
}
}
原文:http://www.cnblogs.com/siqi/archive/2013/12/15/3475222.html
Java实现不同的WebService 调用方式的更多相关文章
- 【转】java通用URL接口地址调用方式GET和POST方式
		
java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...
 - Webservice 调用方式整理
		
前一段时间搞webservice,简单的记录了一下几种常用的调用方式,供大家参考. 第一种:Java proxy 1).用过eclipse的创建web service client来完成 2).在ec ...
 - ajax跨域访问  java controller  和 cxf(webservice) 配置方式(CORS)
		
1. controller跨域访问,配置方式 重点在这里: <mvc:cors> <mvc:mapping path="/*" allowed-origins=& ...
 - java 实现WebService 以及不同的调用方式
		
webservice: 就是应用程序之间跨语言的调用 wwww.webxml.com.cn 1.xml 2. wsdl: webservice description l ...
 - java实现WebService 以及客户端不同的调用方式
		
java 实现WebService 以及不同的调用方式 webservice: 就是应用程序之间跨语言的调用 wwww.webxml.com.cn 1.xml 2. ws ...
 - java 调用wsdl的webservice接口 两种调用方式
		
关于wsdl接口对于我来说是比较头疼的 基本没搞过.一脸懵 就在网上搜 看着写的都很好到我这就不好使了,非常蓝瘦.谨以此随笔纪念我这半个月踩过的坑... 背景:短短两周除了普通开发外我就接到了两个we ...
 - WebService学习整理(一)——客户端三种调用方式整理
		
1 WebService基础 1.1 作用 1, WebService是两个系统的远程调用,使两个系统进行数据交互,如应用: 天气预报服务.银行ATM取款.使用邮箱账号登录各网站等. 2, ...
 - WebService与RMI(远程调用方式实现系统间通信)
		
前言 本文是<分布式java应用基础与实践>读书笔记:另外参考了此博客,感觉讲的挺好的,尤其是其中如下内容: 另外,消息方式实现系统间通信本文不涉及.RMI则只采用spring RMI框架 ...
 - C#动态webservice调用接口 (JAVA,C#)
		
C#动态webservice调用接口 using System; using System.Collections; using System.IO; using System.Net; using ...
 
随机推荐
- 1Z0-053 争议题目解析707
			
1Z0-053 争议题目解析707 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 707.Because of a logical corruption in the EMPLOY ...
 - 关于《selenium2自动测试实战--基于Python语言》
			
关于本书的类型: 首先在我看来技术书分为两类,一类是“思想”,一类是“操作手册”. 对于思想类的书,一般作者有很多年经验积累,这类书需要细读与品位.高手读了会深有体会,豁然开朗.新手读了不止所云,甚至 ...
 - HTML基本元素(一)
			
HTML基本元素(一) 1.换行符 <br /> Ps:br 是换行(Break)的缩写,文本会在这个标签的地方换行. 实例: 第一行<br />第二行 2.段落 <p& ...
 - iOS中获取cell中webview的内容尺寸
			
最近项目中遇到在cell中获取webView的内容的尺寸的需求 实现的思路其实很简单 就是通过执行js 获取尺寸即可 为了后面用着方便我直接封装了一个HTML的cell 起名就叫 STHTMLBase ...
 - 一款基于jQuery日历插件的开发过程
			
这个插件的设置选项,所有样式都设置成自定义,提供回调函数,方便在外部进行扩展 css设置是可变的 也就是说 日历的样式是定制的: /******************************** ...
 - Xenocode Postbuild 2010 for .NET  使用说明
			
文章转载自网络 用法一: .导入要加密的dotNET程序或assembly文件(.dll/.exe) .选择第二个选项卡“Protect” .点击“Select Pattern” .选中所有“Obje ...
 - 爱上MVC~图表的使用Chart
			
回到目录 图表在一个系统中是必须的,MVC架构把它当然是一个扩展集成了进来,通过简单的几句话就可以生成一个风格多样的图表,这给报表的开发带来了很大的方便,大叔的项目中也做了一个测试,把主要的代码贴出来 ...
 - WCF之net.tcp
			
自己通过编写WCF服务端,在客户端直接添加服务引用时发现不能引用对netTcpBinding直接引用(net.tcp://127.0.0.1:8081),所以自己找到方法了记录以备不时之需. 服务端配 ...
 - ComponentOne 2016 V2发布了!
			
火热的夏季迎了ComponentOne今年的第2个重大发布.这次发布包含了一些非常棒的新控件以及很多大的功能增强. 快来下载免费试用版体验吧! FlexChart(UWP.WPF.WinForms ...
 - 使用pyinstaller打包Python应用,生成EXE执行文件
			
在命令行中切换到要打包的程序所在目录,或者在程序目录打开命令行,直接输入下面的指令即可pyinstaller -F xxx.py pyinstaller -F -w -i manage.ico app ...