引入方倍 ————[PHP5調(diào)用SOAP訪問接口](https://www.cnblogs.com/txw1958/p/php5-soap-wsdl.html)
# 一、基礎(chǔ)概念
> SOAP(Simple Object Access Protocol )簡單對象訪問協(xié)議是在分散或分布式的環(huán)境中交換信息的簡單的協(xié)議,是一個基于XML的協(xié)議,它包括四個部分:SOAP封裝(envelop),封裝定義了一個描述消息中的內(nèi)容是什么,是誰發(fā)送的,誰應(yīng)當(dāng)接受并處理它以及如何處理它們的框架;SOAP編碼規(guī)則(encoding rules),用于表示應(yīng)用程序需要使用的數(shù)據(jù)類型的實(shí)例; SOAP RPC表示(RPC representation),表示遠(yuǎn)程過程調(diào)用和應(yīng)答的協(xié)定;SOAP綁定(binding),使用底層協(xié)議交換信息。
> WSDL(Web Service Description Language)就是描述XML Web服務(wù)的標(biāo)準(zhǔn)XML格式,WSDL由Ariba、Intel、IBM和微軟等開發(fā)商提出。它用一種和具體語言無關(guān)的抽象方式定義了給定Web服務(wù)收發(fā)的有關(guān)操作和消息。就其定義來說,你還不能把WSDL當(dāng)作一種對象接口定義語言,例如,CORBA或COM等應(yīng)用程序體系結(jié)構(gòu)就會用到對象接口定義語言。 WSDL保持協(xié)議中立,但它確實(shí)內(nèi)建了綁定SOAP的支持,從而同SOAP建立了不可分割的聯(lián)系。所以,當(dāng)我在這篇文章中討論WSDL的時候,我會假定你把SOAP作為了你的通訊協(xié)議。
> SOAP和WSDL雖然是web service的兩大標(biāo)準(zhǔn),但是兩者并沒有必然的聯(lián)系,都可以獨(dú)立使用。它們之間的關(guān)系就類似HTTP和Html之間的關(guān)系。前者是一種協(xié)議,后者是對一個Web Server的描述。
* * * * *
#二、PHP5下的配置
在php的的配置文件php.ini中,找到
> extension=php_soap.dll
>
# 三、查詢web service方法與參數(shù)、數(shù)據(jù)類型
> 某省電信公司的入單接口為http://***.******.com/services/AcceptedBusiness?wsdl
我們使用SoapClient的__geunctions()和__getTypes()方法查看該接口的方法,參數(shù)和數(shù)據(jù)類型
只有__getFunctions中列出的接口才能被soap調(diào)用。
在根目錄下創(chuàng)建代碼soap.php
~~~
<?php
header("content-type:text/html;charset=utf-8");
try {
$client = new SoapClient("http://***.******.com/services/AcceptedBusiness?wsdl");
print_r($client->__getFunctions());
print_r($client->__getTypes());
} catch (SOAPFault $e) {
print $e;
}
?>
~~~
在瀏覽器運(yùn)行:http://localhost/soap.php后,返回結(jié)果如下
~~~
Array
(
[0] => ArrayOf_xsd_anyType introduceAcceptedBusiness(string $c3, string $c4, string $linkman, string $linknum, string $num, string $idcard, string $remark, string $address)
[1] => ArrayOf_xsd_anyType introduceAcceptedBusinessByAiZhuangWei(string $subname, string $linkphone, string $idcard, string $address, string $businesstype, string $marketcode, string $surveycode, string $commanager, string $commanagerphone, string $bendiwang, string $fenju, string $zhiju, string $remark)
[2] => string introduceAcceptedBusinessByStandardInterface(string $xmlStr)
[3] => string introduceAcceptedBusinessByCallOut(string $xmlStr)
[4] => string introduceAcceptedBusinessByYddj(string $xmlParam)
[5] => ArrayOf_xsd_anyType queryAcceptedBusinessByAiZhuangWei(string $surveycode, string $starttime, string $endtime)
[6] => string queryCallOutOrderByConfig(string $xmlParam)
)
Array
(
[0] => anyType ArrayOf_xsd_anyType[]
)
~~~
其中有個方法 introduceAcceptedBusinessByStandardInterface(string $xmlStr),將是開發(fā)文檔中提到的要使用的接口,參數(shù)為xml字符串
另外有的接口中提到有SoapHeader認(rèn)證,這就需要加入__setSoapHeaders方法,具體可查看http://php.net/manual/zh/soapclient.setsoapheaders.php
# 四、提交入單
> 這一步就是需要根據(jù)開發(fā)文檔拼接xml字符串,然后作為introduceAcceptedBusinessByStandardInterface的參數(shù)傳入
創(chuàng)建acceptedbusiness.php,內(nèi)容如下
~~~
<?php
header("content-type:text/html;charset=utf-8");
try {
$client = new SoapClient('http://***.*******.com/services/AcceptedBusiness?wsdl');
$xml = "
<?xml version='1.0' encoding='UTF-8' ?>
<PACKAGE>
<C3>**電信</C3>
<C4></C4>
<LINKMAN>張三</LINKMAN>
<LINKNUM>13412341234</LINKNUM>
<LINKADDRESS>廣東深圳</LINKADDRESS>
<REMARK>iPhone 6</REMARK>
<CHANNEL></CHANNEL>
<GRIDCODE>1111111111111111111111111111111</GRIDCODE>
<AGENTCODE>2111</AGENTCODE>
<KEY>1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111</KEY>
</PACKAGE>
";
$return = $client->introduceAcceptedBusinessByStandardInterface($xml);
print_r($return);
} catch (SOAPFault $e) {
print_r('Exception:'.$e);
}
?>
~~~
在瀏覽器中執(zhí)行后,返回
~~~
<?xml version="1.0" encoding="UTF-8"?>
<PACKAGE>
<STATUS>0</STATUS>
<REASON>入單成功!</REASON>
<ORDERSEQ>2014100905523549742</ORDERSEQ>
</PACKAGE>
~~~
- 關(guān)于我們
- ApiCloud
- 支付模塊
- 微信支付--wxPay(客戶端)
- 微信支付--wxPay(服務(wù)端)
- 支付寶支付--aliPay(客戶端配置)
- 支付寶支付--aliPay(服務(wù)端配置)
- DoT模板
- 緩存模塊
- 監(jiān)聽模塊
- 百度定位模塊
- 設(shè)置狀態(tài)欄字體顏色
- 選擇城市插件
- 跨頁面執(zhí)行方法
- 安卓-點(diǎn)擊返回事件
- 上傳圖片模塊
- 點(diǎn)擊彈出放大圖片層
- 魅族手機(jī)apiready問題
- 分享
- 跨win或frm執(zhí)行腳本
- 關(guān)于ios數(shù)字自動識別成手機(jī)號
- 百度地圖bMap
- 語音識別模塊
- tabBarMenu底部導(dǎo)航
- 第三方登錄
- QQ網(wǎng)站和appQQ賬號的統(tǒng)一問題解決
- 微信登錄
- QQ登錄
- 微博登錄
- 上拉加載、下拉刷新模塊
- 圖片緩存
- 文件和圖片緩存機(jī)制分享
- PHP
- 支付寶及時到賬
- no input file specified報(bào)錯解決
- thinkphp 整合kindeditor
- 整合tpshop微信模塊到thinkcmf中
- thinkphp3.1.3整合支付寶
- 網(wǎng)站接入QQ OAuth2.0登錄教程
- ThinkPHP整合百度編輯器Ueditor
- PHP加快執(zhí)行效率的寫法規(guī)范
- ThinkPHP操作大全
- PHP操作大全
- Thinkphp中SQL操作返回值
- php5.3 foreach 使用&(與運(yùn)算符)引用賦值要注意的問題
- mysql給字段追加值
- 阿里大魚短信平臺接入
- Navicat 導(dǎo)出 Mysql 數(shù)據(jù)字典
- php 面向?qū)ο笕娼坛?/a>
- PHP5下調(diào)用SOAP
- PHP處理時間格式添加空格
- 偽裝URL請求(.htaccess)
- url請求參數(shù)加解密
- JS插件
- artDialog彈窗-頁面?zhèn)髦?/a>
- jQuery點(diǎn)擊遮罩彈出層固定居中
- jeBox原生彈窗
- bxslider輪播
- js生成指定位數(shù)隨機(jī)數(shù)
- 發(fā)送短信倒計(jì)時
- js調(diào)試
- jQuery.validator 表單驗(yàn)證規(guī)則
- Swiper 輪播
- 獲得焦點(diǎn)時-圖片抖動
- uploadify無刷新上傳圖片
- 導(dǎo)航下拉隱藏上拉顯示
- 獲得焦點(diǎn)時-加黑色蒙版
- jquery.qrcode.js生成二維條形碼(支持中文)
- jquery.qrcode.js生成二維條形碼(官方不支持中文)
- nth-child 選擇器
- 無刷新點(diǎn)擊實(shí)現(xiàn)加載更多數(shù)據(jù)
- 刷新頁面方法
- 判斷滾動條向上向下
- 跨瀏覽器復(fù)制jQuery-zclip
- js校驗(yàn)表單后提交表單的三種方法
- 用JS判斷下拉框是否選中
- div中滾動
- 提交時彈出模態(tài)框
- 當(dāng)圖片不顯示時替換方法
- 前端
- CSS3
- HTML5
- css技巧
- 移動端rem
- Flex布局
- 電商詳情滾動條監(jiān)聽
- VueCircleMenu圓環(huán)按鈕
- iframe自適應(yīng)頁面高度
- 百度Echart
- input:radio改變選中顏色
- Jquery
- 響應(yīng)式布局基本實(shí)現(xiàn)Media Query
- 循環(huán)輸出只輸出新內(nèi)容
- 小程序
- wx.request坑
- 概要
- git操作
- 本地記住密碼
- 操作
- 生成ssh公鑰 記住密碼
- git避坑
- ES6學(xué)習(xí)手札
- 調(diào)試小插件
- 谷歌插件Postman
- PHP調(diào)試助手
- WordPress
- 緩存服務(wù)器Redis
- 在線代碼運(yùn)行 Docker
- 在ubuntu下怎樣安裝https
- BrowserSync 瀏覽器同步測試工具
- getmarkman高效的設(shè)計(jì)稿標(biāo)注、測量工具
- PHPstrom軟件
- 服務(wù)器
- linux 安裝搭建服務(wù)器配置及nginx配置
- tpshop的nginx 服務(wù)器配置方法
- (服務(wù)器訪問文件404解決辦法)IIS 之 添加MIME擴(kuò)展類型及常用的MIME類型列表
- mysql部分
- mysql緩存
- MySql監(jiān)控工具--mytop
- MySql主從搭建
- mysql優(yōu)化
- Mysql 復(fù)制 (主從復(fù)制)
- iOS開發(fā)筆記 - 上線流程
- VUE避坑指南
- 從零開始學(xué)Vue
- Vue-cli
- Webpack
- VUE小記
- npm打包空白
- 打包背景圖片/項(xiàng)目圖片不顯示
- VUE避坑指南/elementUI upload 自定義http-request上傳
- 關(guān)于watch監(jiān)聽路由重復(fù)加載方法
- 解決加載內(nèi)容的時候閃動問題
- vuecli沒有network訪問地址
- python學(xué)習(xí)
- python初始
- pytho內(nèi)置函數(shù)大全
- win10 播放器播放TS文件問題
- 設(shè)計(jì)網(wǎng)站
- VUE避坑指南/VUE-CLI部署空白
- swiper使用問題
- uni-app學(xué)習(xí)手冊
- 目錄結(jié)構(gòu)
- layUI
- nodesass版本sassloader版本問題
