真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

axis2webservice入門知識(shí)(JS,Java,PHP調(diào)用實(shí)例源碼)

背景簡(jiǎn)介

成都創(chuàng)新互聯(lián)成都網(wǎng)站建設(shè)定制網(wǎng)站制作,是成都網(wǎng)站制作公司,為成都純水機(jī)提供網(wǎng)站建設(shè)服務(wù),有成熟的網(wǎng)站定制合作流程,提供網(wǎng)站定制設(shè)計(jì)服務(wù):原型圖制作、網(wǎng)站創(chuàng)意設(shè)計(jì)、前端HTML5制作、后臺(tái)程序開(kāi)發(fā)等。成都網(wǎng)站改版熱線:028-86922220

最近接觸到一個(gè)銀行接口的案子,臨時(shí)需要用到axis2 webservice。自己現(xiàn)學(xué)現(xiàn)總結(jié)的一些東西,留給新手。少走彎路。

Axis2簡(jiǎn)介

①采用名為 AXIOM(AXIs Object Model)的新核心 XML 處理模型,利用新的XML解析器提供的靈活性按需構(gòu)造對(duì)象模型。

②支持不同的消息交換模式。目前Axis2支持三種模式:In-Only、Robust-In和In-Out。In-Only消息交換模式只有SOAP請(qǐng)求,而不需要應(yīng)答;Robust-In消息交換模式發(fā)送SOAP請(qǐng)求,只有在出錯(cuò)的情況下才返回應(yīng)答;In-Out消息交換模式總是存在SOAP請(qǐng)求和應(yīng)答。

③提供阻塞和非阻塞客戶端 API。

④支持內(nèi)置的 Web服務(wù)尋址 (WS-Addressing) 。

⑤靈活的數(shù)據(jù)綁定,可以選擇直接使用 AXIOM,使用與原來(lái)的 Axis 相似的簡(jiǎn)單數(shù)據(jù)綁定方法,或使用 XMLBeans、JiBX 或 JAXB 2.0 等專用數(shù)據(jù)綁定框架。

⑥新的部署模型,支持熱部署。

⑦支持HTTP,SMTP,JMS,TCP傳輸協(xié)議。

⑧支持REST (Representational State Transfer)。

測(cè)試環(huán)境

【jdk1.6.0】 +【tomcat-6.0.18】 + 【axis2-1.6.1】+【PHP Version 5.3.5】

未測(cè)試最低支持配置。

環(huán)境準(zhǔn)備

一、部署Axis2環(huán)境.

1.下載安裝

apache 官網(wǎng)下載地址:http://ws.apache.org/axis2/ 選擇 Standard Binary Distribution 和 WAR Distribution

2.配置系統(tǒng)環(huán)境變量:

①添加AXIS2_HOME變量并指向 Standard Binary Distribution解壓目標(biāo)目錄。例如:$AXIS2_HOME$ =D:\axis2-1.6.1;

②將axis2.bat所在目錄添加到系統(tǒng)環(huán)境變量path里。例如:將 D:\axis2-1.6.1\bin添加到path現(xiàn)有值的最后面;

③將$AXIS2_HOME$\lib添加到系統(tǒng)環(huán)境變量classpath里。例如:將D:\axis2-1.6.1\lib添加到classpath現(xiàn)有值的最后面。

  1. 把WAR Distribution 解壓到 $tomcat_home$\webapps\axis2下(新建axis2文件夾),當(dāng)然你也可以參照axis2文檔里列出的步驟使用ant 創(chuàng)建一個(gè)axis2.war ,放到$tomcat_home$\webapps下,然后啟動(dòng)tomcat ,那么tomcat會(huì)在webapps下自動(dòng)創(chuàng)建一個(gè)axis2文件夾。

二、測(cè)試Axis2環(huán)境.

1.訪問(wèn) http://localhost:[port]/axis2 (請(qǐng)將[port]修改成你的Tomcat對(duì)應(yīng)端口,默認(rèn)為8080);進(jìn)入axis2的歡迎界面了。點(diǎn)擊“Validate”。

如果有報(bào)錯(cuò),則需根據(jù)錯(cuò)誤信息檢查上述步驟。如果沒(méi)有錯(cuò)誤信息,那么Axis2的環(huán)境測(cè)試算是通過(guò)了。

  1. 可以點(diǎn)擊“Administration” 并使用初始用戶名和密碼:admin ;axis2登錄,可以看到System Components以及可以使用Upload Service Tools。部署新的arr文件了。另可去$tomcat_home$\webapps\axis2\WEB-INF\conf\axis2.xml下修改用戶名和密碼。

創(chuàng)建Demo HelloWorld

一、service端開(kāi)發(fā)

1.創(chuàng)建一個(gè)java項(xiàng)目

2.新建類HelloWorld.java

參考代碼:

package sample;

import org.apache.axiom.om.OMAbstractFactory;

import org.apache.axiom.om.OMElement;

import org.apache.axiom.om.OMFactory;

import org.apache.axiom.om.OMNamespace;

public class HelloWorld {

public OMElement sayHello(OMElement in){

String name=in.getText();

String info="你好"+name+",給你推薦http://www.sietoo.com";

OMFactory fac=OMAbstractFactory.getOMFactory();

OMNamespace omNs=fac.createOMNamespace("http://www.sietoo.com/","hw");

OMElement resp=fac.createOMElement("sayHelloResponse",omNs);

resp.setText(info);

return resp;

}

}

3.新建文件META-INF \ services.xml

參考代碼:

This is a sample Web Service.

sample.HelloWorld

二、項(xiàng)目打包并發(fā)布

1.可使用你熟悉的IDE進(jìn)行打包成HelloWorld.aar

參考直接打包方式:

在命令符行境下,將當(dāng)前目錄切換到該項(xiàng)目包下。如博主的例子就需要切換到sample所在的文件夾,注意并非切換進(jìn)sample。使用如下命令:jar cvf HelloWorld.aar . 完成在當(dāng)前目錄生成HelloWorld.aar 。請(qǐng)注意命令末尾的點(diǎn)“.”。

2.發(fā)布,使用前面提到的登錄axis2后看到的Upload Service 工具 將HelloWorld.arr部署到Tomc上。

3.發(fā)布測(cè)試,如博主例子訪問(wèn)http://localhost:8088/axis2/services/HelloWorld?wsdl查看第2步驟中部署的HelloWrold的描述文件。

如果有報(bào)錯(cuò),則需根據(jù)錯(cuò)誤信息檢查上述步驟。如果沒(méi)有錯(cuò)誤信息,那么HelloWorld的service端就算完成了。

三、簡(jiǎn)單客戶端調(diào)用

1.一個(gè)簡(jiǎn)單的Java調(diào)用客戶端。

參考代碼:

package example.client;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class TestClient {
private static EndpointReference targetEPR=new EndpointReference
("http://localhost:8080/axis2/services/HelloWorld");
public static OMElement getSayHelloOMElement(){
OMFactory fac=OMAbstractFactory.getOMFactory();
OMNamespace omNs=fac.createOMNamespace("http://www.sietoo.com/","hw");
OMElement method=fac.createOMElement("sayHello",omNs);
method.setText("andy");
return method;
}
public static void main(String[] args){
try{
Options options=new Options();
options.setTo(targetEPR);
ServiceClient sender=new ServiceClient();
sender.setOptions(options);
OMElement sayHello=TestClient.getSayHelloOMElement();
OMElement result=sender.sendReceive(sayHello);
System.out.println(result);
}
catch(Exception axisFault){
axisFault.printStackTrace();
}
}
}
編譯此文件,并執(zhí)行。

如果有報(bào)錯(cuò),則需根據(jù)錯(cuò)誤信息檢查上述步驟。如果沒(méi)有錯(cuò)誤信息,那么Demo HelloWorld就完滿完成。

各類客戶端調(diào)用實(shí)例

一、java調(diào)用axis2 webservice (包括單個(gè)參數(shù)和多個(gè)參數(shù)方法的調(diào)用)
參考代碼:

package example.client;

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
public class s2 {
private static EndpointReference targetEPR=new EndpointReference("http://www.sietoo.com/axis2/services/SVAMobileWebService");
public static OMElement getSayHelloOMElement(){
OMFactory fac=OMAbstractFactory.getOMFactory();
OMNamespace omNs=fac.createOMNamespace("http://www.sietoo.com","andy");

//測(cè)試調(diào)用bandMobileNo (多參數(shù)方法)
OMElement bandMobileNo=fac.createOMElement("bandMobileNo",omNs);
OMElement UserId=fac.createOMElement("UserId",omNs);
OMElement password=fac.createOMElement("password",omNs);
OMElement bindingBank=fac.createOMElement("bindingBank",omNs);
UserId.addChild(fac.createOMText(UserId, "18629078140"));
password.addChild(fac.createOMText(password, "mynewpassword"));
bindingBank.addChild(fac.createOMText(bindingBank, "622260062001991159"));
bandMobileNo.addChild(UserId);
bandMobileNo.addChild(password);
bandMobileNo.addChild(bindingBank);
return bandMobileNo;

//測(cè)試調(diào)用getAccountInfo (單參數(shù)方法)
//OMElement getAccountInfo=fac.createOMElement("getAccountInfo",omNs);
//OMElement accountNum=fac.createOMElement("accountNum",omNs);
//accountNum.addChild(fac.createOMText(accountNum, "18629078140"));
//getAccountInfo.addChild(accountNum);
//return getAccountInfo;
}
public static void main(String args[]){
try{
Options options=new Options();
options.setTo(targetEPR);
ServiceClient sender=new ServiceClient();
sender.setOptions(options);
OMElement sayHello=s2.getSayHelloOMElement();
OMElement result=sender.sendReceive(sayHello);
System.out.println(result);
}
catch(Exception axisFault){
axisFault.printStackTrace();
}}}

二、PHP調(diào)用axis2 webservice (包括調(diào)用多參數(shù),但參數(shù)方法)

1.使用Soap調(diào)用(需要PHP的版本支持)

$wsdl='http://www.sietoo.com/axis2/services/SVAMobileWebService?wsdl';
$soap=new SoapClient($wsdl,array( 'trace'=>false,'cache_wsdl'=>WSDL_CACHE_NONE ) );
$soap=new SoapClient($wsdl);
$method="bandMobileNo";
if(isset($_POST['passwd'])&&isset($_POST['UserId'])&&isset($_POST['bindingBank'])){
$params=array( 'UserId'=>$_POST['UserId'],'password'=>$_POST['passwd'],'bindingBank'=>$_POST['bindingBank']);
try{
$result=$soap->$method($params);
echo$result->return;
echo'
';
}catch(SoapFault $e){echo $e->getMessage();}
}
?>


bandMobileNo



tel.


pwd.


cardno.







2 使用Nusoap調(diào)用 (需要下載nusoap.php附下載地址:http://download.csdn.net/detail/mr_z_andy/3845711)
分如下兩種方式:
①直接調(diào)用

/*****/
/ 文件名 : soapclient.php
/
說(shuō) 明 : WebService接口客戶端例程
/* 作 者 :www.sietoo.com
/*****/
include ('NuSoap.php');
// 創(chuàng)建一個(gè)soapclient對(duì)象,參數(shù)是server的WSDL
$client = new soapclient ( 'http://localhost/Webservices/Service.asmx?WSDL', 'wsdl' );
// 參數(shù)轉(zhuǎn)為數(shù)組形式傳遞
$aryPara = array ('strUsername' => 'username', 'strPassword' => MD5 ( 'password' ) );
// 調(diào)用遠(yuǎn)程函數(shù)
$aryResult = $client->call ( 'login', $aryPara );
//echo $client->debug_str;
/
if (!$err=$client->getError()) {
print_r($aryResult);
} else {
print "ERROR: $err";
}
/
$document = $client->document;
echo <<


$document


SoapDocument;
?>

②代理調(diào)用

/*****/
/ 文件名 : soapclient.php
/
說(shuō) 明 : WebService接口客戶端例程
/* 作 者 :www.sietoo.com
/*****/
require ('NuSoap.php');
//創(chuàng)建一個(gè)soapclient對(duì)象,參數(shù)是server的WSDL
$client = new soapclient ( 'http://localhost/Webservices/Service.asmx?WSDL', 'wsdl' );
//生成proxy類
$proxy = $client->getProxy ();
//調(diào)用遠(yuǎn)程函數(shù)
$aryResult = $proxy->login ( 'username', MD5 ( 'password' ) );
//echo $client->debug_str;
/
if (!$err=$proxy->getError()) {
print_r($aryResult);
} else {
print "ERROR: $err";
}
/
$document = $proxy->document;
echo <<


$document


SoapDocument;
?>

三、JS客戶調(diào)用axis2 webservice (包括調(diào)用多參數(shù),但參數(shù)方法)
1 實(shí)例①

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>















2實(shí)例② Ajax直接調(diào)用,不推薦
下面僅貼出JS段代碼,供參考。
var xmlHttp = null;
var bankno=null;
var telno=null;
var checkid=false;
function createXMLHttpRequest() {
if(window.XMLHttpRequest){
//Firefox ,Mozillar ,Opera ,Safari ,IE7 ,IE8
xmlHttp = new XMLHttpRequest();
//Mozillar瀏覽器的BUG進(jìn)行修正的
if(xmlHttp.overrideMimeType){
xmlHttp.overrideMimeType("text/html");
}
}else if(window.ActiveXObject){
//針對(duì)IE的各種版本
var versions = [ 'Microsoft.XMLHTTP', 'MSXML.XMLHTTP',
'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0',
'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0',
'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0',
'MSXML2.XMLHTTP' ];
//嘗試創(chuàng)建XMLHttpRequest對(duì)象
for ( var i = 0; i < versions.length; i++) {
try {
xmlHttp = new ActiveXObject(versions);
break;
} catch (e) {
}
}
}

}

function AsynRequest() {
createXMLHttpRequest();
if (xmlHttp == null)
{
alert("不能創(chuàng)建 XmlHttpRequest 對(duì)象");
return ;
}
xmlHttp.open("GET", "http://www.sietoo.com/axis2/services/demoService/doTest?UserId="+telno+"&bindingBank="+"&bindingBank="+bankno, false);
xmlHttp.setRequestHeader("Connection", "close");
xmlHttp.onreadystatechange = function ()
{
if (xmlHttp.readyState == 4)
{
if (xmlHttp.status == 200)
{
if(xmlHttp.responseXML==null)
{
return ;
}

var res2=xmlHttp.responseXML.getElementsByTagName("ns:return")[0].firstChild.nodeValue;
//res2即為返回值。
return ;
}

}
}
}
xmlHttp.send();
return ;
}


標(biāo)題名稱:axis2webservice入門知識(shí)(JS,Java,PHP調(diào)用實(shí)例源碼)
轉(zhuǎn)載注明:http://weahome.cn/article/gehshs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部