目錄
Request
Response
Debug
首頁 後端開發 php教程 NuSOAP教程_PHP教程

NuSOAP教程_PHP教程

Jul 13, 2016 pm 05:35 PM
功能 如何 安裝 實例 提供 教學 文件 說明 這個

这个文档描述了如何取得和安装 NuSOAP,然后提供一些实例来说明 NuSOAP 的功能,这并不是一个全面的 NuSOAP 的介绍,但是希望能够然一些 PHP 开发者可以有一个很好的入门。

NuSOAP 是一组 PHP 类,它让开发者可以创建和使用 SOAP web services。它不需要安装任何的 PHP 扩展。它是在2004年12月3日被开发,当前的版本是 NuSOAP(0.6.7) 。支持 SOAP 1.1 规范,它能够生产 WSDL 1.1 ,当然也可以使用它,同时也支持 rpc/encoded and document/literal service。但是,必须注意 NuSOAP 没有像 .NET 和 Apache Axis 那样提供完全的实现。

Hello, World
我会以 "Hello, World" 为实例做开始,编写基本的 NuSOAP 客户端和服务器端的代码。

我们先从服务器端开始,应为没有服务器端,有客户端也是没有意义的。我们将编写一个带有单个参数并返回一个字符串,名叫 Hello 的 SOAP 方法,希望代码中的注释能够提供有效的说明。

// Pull in the NuSOAP code
require_once(nusoap.php);
// Create the server instance
$server = new soap_server;
// Register the method to expose
$server->register(hello);
// Define the method as a PHP function
function hello($name) {
    return Hello, . $name;
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ;
$server->service($HTTP_RAW_POST_DATA);
?>

以下是客户端的代码,有一些重要的事情需要注意:首先,当创建实例 soapclient 时,需要指定一个 service 的 URL 为参数,在这个实例中,helloworld.php 从 http://localhost/phphack 访问的。当然,你要使用的 services 放在不同的 URL;第二,当调用service 时,第一个参数是 service 的名字,必须要匹配有效的方法名(有的服务器是大小写敏感的)。在这个实例,他必须匹配在 helloworld.php 中已经注册了的方法。最后,第二个参数是一个数组,它将是传递给 SOAP service 方法作为参数。既然 helloworld.php 中的方法 hello 只有一个参数,那么数组就只有一个元素。

// Pull in the NuSOAP code
require_once(nusoap.php);
// Create the client instance
$client = new soapclient(http://localhost/phphack/helloworld.php);
// Call the SOAP method
$result = $client->call(hello, array(name => Scott));
// Display the result
print_r($result);
?>

Debugging
编程时,当有问题出现的时候你都需要调试。NuSOAP 提供了一组工具来帮助你做这个工作。NuSOAP 调试的时候需要查看的信息是发送的请求信息和返回的相应信息。NuSOAP 的客户端类允许你通过它的两个成员来查看这些信息。例如,这里是显示请求和响应的 helloworldclient.php 的修改版。在下一部分我会回顾显示在客户端代码的请求和响应信息。

// Pull in the NuSOAP code
require_once(nusoap.php);
// Create the client instance
$client = new soapclient(http://localhost/phphack/helloworld.php);
// Call the SOAP method
$result = $client->call(hello, array(name => Scott));
// Display the result
print_r($result);
// Display the request and response
echo

Request

;
echo
 . htmlspecialchars($client->request, ENT_QUOTES) . 
登入後複製
;
echo

Response

;
echo
 . htmlspecialchars($client->response, ENT_QUOTES) . 
登入後複製
;
?>

NuSOAP 也提供了一个方法使用它的类就可以通过日志来查看调试信息。加入以下的代码将会显示冗长的调试信息。不幸的是输出的说明必须留给读者。

// Display the debug messages
echo

Debug

;
echo
 . htmlspecialchars($client->debug_str, ENT_QUOTES) . 
登入後複製
;

服务器端能够提供相似的调试信息,有趣的是,这些调试信息是在SOAP 的相应的末尾以 xml 格式显示,因此它可以在客户端中查看到。服务器端的调试看起来像这样:

// Pull in the NuSOAP code
require_once(nusoap.php);
// Enable debugging *before* creating server instance
$debug = 1;
// Create the server instance
$server = new soap_server;
// Register the method to expose
$server->register(hello);
// Define the method as a PHP function
function hello($name) {
    return Hello, . $name;
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ;
$server->service($HTTP_RAW_POST_DATA);
?>

调试的第三个方法不算是真正的调试,它是很好的编程实践。上面的实例在调用 SOAP 的时候没有做错误的检查,更健壮的客户端会像这样:

// Pull in the NuSOAP code
require_once(nusoap.php);
// Create the client instance
$client = new soapclient(http://localhost/phphack/helloworld.php);
// Check for an error
$err = $client->getError();
if ($err) {
    // Display the error
    echo

Constructor error: . $err .

;
    // At this point, you know the call that follows will fail
}
// Call the SOAP method
$result = $client->call(hello, array(name => Scott));
// Check for a fault
if ($client->fault) {
    echo

Fault: ;
    print_r($result);
    echo

;
} else {
    // Check for errors
    $err = $client->getError();
    if ($err) {
        // Display the error
        echo

Error: . $err .

;
    } else {
        // Display the result
        print_r($result);
    }
}
?>

为了测试代码,需要引起错误发生,例如,改变调用的方法名称 hello 为 goodbye。

Request and Response
我在上面的例子中已经展示了显示 SOAP 的请求和响应信息是如此的容易,在这里 hello2client.php 的请求信息:

POST /phphack/helloworld2.php HTTP/1.0
Host: localhost
User-Agent: NuSOAP/0.6.8 (1.81)
Content-Type: text/xml; charset=ISO-8859-1
SOAPAction: ""
Content-Length: 538


  SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"
  xmlns:si="http://soapinterop.org/xsd">

 
   Scott
 



在 HTTP headers 里,你会看到 SOAPAction 是一个空的字符串,这是它的默认值。你的 service 方法可以设置 SOAPAction 的值,你的客户端代码可以指定 SOAPAction 作为参数来调用方法。

在 XML payload,你可以看到 NuSOAP 使用和Latin-1一样著名的 ISO-8859-1 做为编码,为了指定不同的编码,你可以在客户端 soapclient 的实例设置 soap_defencoding 属性。使用指定的编码来编码参数的数据当然就是程序员的责任。幸运地,在 SOAP 里PHP提供了很多函数来编码和解码最通用的编码数据,如 UTF-8。


另一件事情要注意的是,元素指定要调用的方法,名称为 hello 的元素被放在 http://tempuri.org的域名下,指定真实的域名是最佳的实践,对于很多 services 也是很有必要的。这里展示了一个未来的文档:

SOAP 服务的响应像以下:

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Wed, 03 Nov 2004 21:32:34 GMT
X-Powere

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/508345.htmlTechArticle这个文档描述了如何取得和安装 NuSOAP,然后提供一些实例来说明 NuSOAP 的功能,这并不是一个全面的 NuSOAP 的介绍,但是希望能够然一些...
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1665
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
夏天,一定要試試拍攝彩虹 夏天,一定要試試拍攝彩虹 Jul 21, 2024 pm 05:16 PM

夏天雨後,常常能見到美麗又神奇的特殊天氣景象-彩虹。這也是攝影中可遇而不可求的難得景象,非常出片。彩虹出現有這樣幾個條件:一是空氣中有充足的水滴,二是太陽以較低的角度照射。所以下午雨過天晴後的一段時間內,是最容易看到彩虹的時候。不過彩虹的形成受天氣、光線等條件的影響較大,因此一般只會持續一小段時間,而最佳觀賞、拍攝時間更為短暫。那麼遇到彩虹,怎樣才能合理地記錄下來並拍出質感呢? 1.尋找彩虹除了上面提到的條件外,彩虹通常出現在陽光照射的方向,即如果太陽由西向東照射,彩虹更有可能出現在東

PHP教學:如何將int型別轉換為字串 PHP教學:如何將int型別轉換為字串 Mar 27, 2024 pm 06:03 PM

PHP教學:如何將int型別轉換為字串在PHP中,將整型資料轉換為字串是常見的操作。本教學將介紹如何使用PHP內建的函數將int型別轉換為字串,同時提供具體的程式碼範例。使用強制型別轉換:在PHP中,可以使用強制型別轉換的方式將整型資料轉換為字串。這種方法非常簡單,只需要在整型資料前加上(string)即可將其轉換為字串。下面是一個簡單的範例程式碼

電腦上如何下載360安全瀏覽器 電腦上如何下載360安全瀏覽器 Apr 12, 2024 pm 01:52 PM

電腦上如何下載360安全瀏覽器?是一款安全性非常高的網頁瀏覽器軟體,這款瀏覽器功能十分豐富,操作起來非常簡單,並且使用360安全瀏覽器瀏覽網頁可以很好地保護用戶隱私安全,不少人喜歡使用這款瀏覽器辦公,不過很多人還不知道如何在電腦上下載安裝360安全瀏覽器。本篇文章就給大家及詳細介紹360安全瀏覽器電腦版下安裝流程一覽,希望能幫助大家解決問題。 360安全瀏覽器電腦版下安裝流程一覽1、電腦主頁面,找到「360軟體管家」進入(如圖)。 2.開啟360軟體管家,找到搜尋框(如圖)。 3、點擊搜尋

PHP程式必備:安裝這些才能順利運作! PHP程式必備:安裝這些才能順利運作! Mar 27, 2024 pm 05:54 PM

PHP程式必備:安裝這些才能順利運作! PHP是一種流行的伺服器端腳本語言,廣泛用於開發網頁應用程式。要成功運行PHP程序,首先需要在伺服器上安裝一些必備的軟體和工具。在本文中,我們將介紹必須安裝的軟體和工具,並附上具體的程式碼範例,以幫助您順利執行PHP程式。一、PHP解譯器PHP程式的核心是PHP解譯器,負責解析執行PHP程式碼。要安裝PHP解譯器,可以按照

PHP FFmpeg 擴充安裝指南:簡單易懂的教學 PHP FFmpeg 擴充安裝指南:簡單易懂的教學 Mar 28, 2024 pm 02:17 PM

PHPFFmpeg擴充安裝指南:簡單易懂的教學在網站開發的過程中,有時候我們需要處理各種多媒體文件,例如音訊、視訊等。而FFmpeg是一個功能強大的多媒體處理工具,它可以處理音訊、視訊等多種格式,並且支援各種轉碼、剪切等操作。 PHPFFmpeg擴充則是在PHP中呼叫FFmpeg功能的擴充函式庫,使用它可以很方便地處理多媒體檔案。以下我們將詳細介紹PHPF

Python下載後應如何開啟 Python下載後應如何開啟 Apr 03, 2024 pm 05:12 PM

若要開啟剛下載的Python,請依照下列步驟操作:將安裝程式放在易於存取的位置。雙擊安裝程式圖示並按照螢幕上的指示進行操作。安裝完成後,在命令提示字元或終端機視窗中輸入"python"以啟動Python互動式shell。

虛擬幣轉錯鏈怎麼找回來?虛擬幣轉錯鏈找回操作教程 虛擬幣轉錯鏈怎麼找回來?虛擬幣轉錯鏈找回操作教程 Jul 16, 2024 pm 09:02 PM

虛擬市場的擴大,離不開虛擬貨幣的流通,自然離不開虛擬貨幣轉帳問題。常見的轉帳錯誤就是位址複製錯誤,同樣也有另一個錯誤就是鏈選擇錯誤。虛擬幣轉錯鏈依舊是個棘手的問題,但基於轉帳操作的不熟練,新手轉錯連也時常發生,那麼究竟虛擬幣轉錯鏈怎麼找回?轉錯連鏈可以透過第三方平台去找回,但不一定會成功。接下來小編為大家詳細說說,幫助大家更好的保管自己的虛擬資產。虛擬幣轉錯鏈怎麼找回來?虛擬幣轉錯鏈的找回過程可能複雜且具有挑戰性,但透過確認轉帳詳情、聯絡交易所或錢包提供者、匯入私鑰到相容錢包、使用跨鏈橋工

GateToken(GT)幣是什麼? GT幣功能及代幣經濟學介紹 GateToken(GT)幣是什麼? GT幣功能及代幣經濟學介紹 Jul 15, 2024 pm 04:36 PM

GateToken(GT)币是什么?GT(GateToken)是GateChain的链上原生资产,也是Gate.io的官方平台币。GT币的价值与Gate.io及GateChain生态的发展息息相关。什么是GateChain?GateChain诞生于2018年,是Gate.io所推出的新一代高性能公链。GateChain专注于保护用户的链上资产安全,并提供便捷的去中心化交易服务。GateChain的目标是构建一个企业级安全高效的去中心化数字资产储存、分发和交易生态系統。Gatechain具有独创的

See all articles