phpsoap教程,菜鳥教程 php

本文目錄一覽:

如何使用PHP調用ArcGIS Server的Soap接口

前一陣子,簡單的學習了一下ArcGIS Server,在開發層次上ArcGIS Server支持兩種協議,一個是老的Soap協議,也就是webservice,另外一種是REST協議,其中REST協議是從ArcGIS Server9.3開始支持的協議,也是ESRI今後只要支持的協議,但是老的Soap協議還繼續支持。該章得內容主要介紹如何使用PHP來調用ArcGIS Server的WebService。

查看ArcGIS Server的SOAP SDK的幫助的時候,會發現所提供的示例代碼只有c#,vb.net和java的,並沒有PHP語言的示例,實際上並不是不支持PHP語言,從PHP toolkits include PHP-SOAP and NuSOAP上可以看出PHP是支持Soap協議的,只不過使用PHP並沒有提供現成的工具可以將WSDL轉換成本地化的類,而.NET SDK提供了Wsdl.exe工具,java提供了Apache Axis工具可以將WSDL中的類型轉換成本地化類。

當使用PHP調用WebService的時候,當輸入的參數是簡單數據類型的時候是沒有任何問題的,返回值類型是類得時候也沒有任何的問題,但是當輸入參數的值類型為某個類得時候,就無法調用了,這些類太多了,自己手寫這些類幾乎是不可能,因此找到一個類似於Wsdl.exe和Apache Axis的工具還是很有必要的,在網上終於搜到一個工具,名字為wsdl2php.php可以實現該功能,其代碼如下所示:

// +————————————————————————+

// | wsdl2php |

// +————————————————————————+

// | Copyright (C) 2005 Knut Urdalen |

// +————————————————————————+

// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |

// | “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |

// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |

// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |

// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |

// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |

// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |

// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |

// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |

// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |

// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |

// +————————————————————————+

// | This software is licensed under the LGPL license. For more information |

// | see |

// +————————————————————————+

ini_set(‘soap.wsdl_cache_enabled’, 0); // disable WSDL cache

//if( $_SERVER[‘argc’] != 2 ) {

// die(“usage: wsdl2php /n”);

//}

$wsdl = “liuf:8399/arcgis/services/catchment/MapServer?wsdl”;

print “Analyzing WSDL”;

try {

$client = new SoapClient($wsdl);

} catch(SoapFault $e) {

die($e);

}

print “.”;

$dom = DOMDocument::load($wsdl);

print “.”;

// get documentation

$nodes = $dom-getElementsByTagName(‘documentation’);

$doc = array(‘service’ = ”,

‘operations’ = array());

foreach($nodes as $node) {

if( $node-parentNode-localName == ‘service’ ) {

$doc[‘service’] = trim($node-parentNode-nodeValue);

} else if( $node-parentNode-localName == ‘operation’ ) {

$operation = $node-parentNode-getAttribute(‘name’);

//$parameterOrder = $node-parentNode-getAttribute(‘parameterOrder’);

$doc[‘operations’][$operation] = trim($node-nodeValue);

}

}

print “.”;

// get targetNamespace

$targetNamespace = ”;

$nodes = $dom-getElementsByTagName(‘definitions’);

foreach($nodes as $node) {

$targetNamespace = $node-getAttribute(‘targetNamespace’);

}

print “.”;

// declare service

$service = array(‘class’ = $dom-getElementsByTagNameNS(‘*’, ‘service’)-item(0)-getAttribute(‘name’),

‘wsdl’ = $wsdl,

‘doc’ = $doc[‘service’],

‘functions’ = array());

print “.”;

// PHP keywords – can not be used as constants, class names or function names!

$reserved_keywords = array(‘and’, ‘or’, ‘xor’, ‘as’, ‘break’, ‘case’, ‘cfunction’, ‘class’, ‘continue’, ‘declare’, ‘const’, ‘default’, ‘do’, ‘else’, ‘elseif’, ‘enddeclare’, ‘endfor’, ‘endforeach’, ‘endif’, ‘endswitch’, ‘endwhile’, ‘eval’, ‘extends’, ‘for’, ‘foreach’, ‘function’, ‘global’, ‘if’, ‘new’, ‘old_function’, ‘static’, ‘switch’, ‘use’, ‘var’, ‘while’, ‘array’, ‘die’, ‘echo’, ’empty’, ‘exit’, ‘include’, ‘include_once’, ‘isset’, ‘list’, ‘print’, ‘require’, ‘require_once’, ‘return’, ‘unset’, ‘__file__’, ‘__line__’, ‘__function__’, ‘__class__’, ‘abstract’, ‘private’, ‘public’, ‘protected’, ‘throw’, ‘try’);

php soap 如何設置超時?

在使用soap前,先檢查soap的url是否可訪問。如為true則繼續執行Soap,否則給出超時提醒。

下面是我經常使用的判斷網站鏈接是否可用的函數,希望對你有用。

//判斷URL在指定時間內是否有相應

function checkUrl($url, $timeout = 3){

$ret = false;

$handle = curl_init();

curl_setopt($handle, CURLOPT_URL,$url);

curl_setopt($handle, CURLOPT_NOBODY, true);

curl_setopt($handle, CURLOPT_TIMEOUT,$timeout);//設置默認超時時間為3秒

$result = curl_exec($handle);

$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);

curl_close($handle);

if(strpos($httpCode,’2′) == 0){

$ret = true;

}

return $ret;

}

如何給soap添加header頭 php

使用php 設置soapHeader時要如下進行,不然發出去的包會變成類似“itemkeyuser/keyvalue23107720/value/item”的格式:  $auth_header = array( ‘user’=$key, ‘password’=$pwd );  // 下面的RequestSOAPHeader 對應 wsdl 定義裡面的 xsd:element name=”RequestSOAPHeader”….. $authvalues = new SoapVar($auth_header, SOAP_ENC_OBJECT,”RequestSOAPHeader”,$uri); $header = new SoapHeader($uri, ‘RequestSOAPHeader’, $authvalues); $api = new SoapClient(null,$options); $api-__setSoapHeaders(array($header));不明白的話可以去後盾人看看相關的教學視頻。

請大神指教用php發送SOAP請求

使用PHP中的soap類進行soap請求,請求的數據要跟wsdl中的數據類型一致,返回的數據也是由WSDL中定義好了的按照定義去取數據即可。

原創文章,作者:AJYX,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/144187.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
AJYX的頭像AJYX
上一篇 2024-10-24 15:28
下一篇 2024-10-24 15:28

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • MQTT使用教程

    MQTT是一種輕量級的消息傳輸協議,適用於物聯網領域中的設備與雲端、設備與設備之間的數據傳輸。本文將介紹使用MQTT實現設備與雲端數據傳輸的方法和注意事項。 一、準備工作 在使用M…

    編程 2025-04-29
  • Python3.6.5下載安裝教程

    Python是一種面向對象、解釋型計算機程序語言。它是一門動態語言,因為它不會對程序員提前聲明變量類型,而是在變量第一次賦值時自動識別該變量的類型。 Python3.6.5是Pyt…

    編程 2025-04-29
  • Deepin系統分區設置教程

    本教程將會詳細介紹Deepin系統如何進行分區設置,分享多種方式讓您了解如何規劃您的硬盤。 一、分區的基本知識 在進行Deepin系統分區設置之前,我們需要了解一些基本分區概念。 …

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Qt雷達探測教程

    本文主要介紹如何使用Qt開發雷達探測程序,並展示一個簡單的雷達探測示例。 一、環境準備 在開始本教程之前,需要確保你的開發環境已經安裝Qt和Qt Creator。如果沒有安裝,可以…

    編程 2025-04-29
  • 猿編程python免費全套教程400集

    想要學習Python編程嗎?猿編程python免費全套教程400集是一個不錯的選擇!下面我們來詳細了解一下這個教程。 一、課程內容 猿編程python免費全套教程400集包含了從P…

    編程 2025-04-29
  • Python煙花教程

    Python煙花代碼在近年來越來越受到人們的歡迎,因為它可以讓我們在終端里玩煙花,不僅具有視覺美感,還可以通過代碼實現動畫和音效。本教程將詳細介紹Python煙花代碼的實現原理和模…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用Snare服務收集日誌:完整教程

    本教程將介紹如何使用Snare服務收集Windows服務器上的日誌,並將其發送到遠程服務器進行集中管理。 一、安裝和配置Snare 1、下載Snare安裝程序並安裝。 https:…

    編程 2025-04-29

發表回復

登錄後才能評論