Request_Soap 类別

Request_Curl 类別主要是用來透過 PHP 的 SoapClient 擴充执行 SOAP 請求。 你的 PHP 安装必須以 "--enable-soap" 编譯。你可以檢查 phpinfo() 的輸出來了解是否是此情況。

建立一个實例

你可以透過 Request 类別鍛造一个此类別的實例:

// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 請注意,这只建立物件,不会执行請求!

set_params($params)

set_params 方法能让你在 SOAP 請求呼叫時設定傳遞參数。

靜態
參数
參数 預設 描述
$params 必要 給請求的參数陣列。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 設定一些參数
$soap->set_params(array('userid' => 12, 'data' => $payload));

請注意,你必須定義參数的格式取決於被呼叫的 SOAP 服務。 例如,某些情況下期望它們被包裹在一个陣列中。 SOAP Request 驅动将以你在 set_params 使用的格式傳遞那些參数到該服務,所以確保那是正確的。

set_option($option, $value)

set_option 方法能让你定義一个 SoapClient 選項以被傳遞到該請求。

靜態
參数
參数 預設 描述
$option 必要 要設定的 SoapClient 選項。
$value 必要 要設給此選項的值。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 設定用於該請求的使用者名稱
$soap->set_option('login', $username);

set_options(array $options)

set_options 方法能让你定義多个 SoapClient 選項以被傳遞到該請求。

靜態
參数
參数 預設 描述
$options 必要 要設定的 SoapClient 選項和值的陣列。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 設定用於該請求的使用者名稱和密码
$soap->set_options(array(
	'login' => $username,
	'password' => $password,
	)
);

add_param($param, $value = null)

add_param 方法能让你添加一个或更多參数到已定義的。

靜態
參数
參数 預設 描述
$param 必要 要設定的參数名稱,或一个參数和值的陣列。
$value
null
要被定義的值。只用於當 $param 是一个字串值。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 添加一些參数
$soap->add_param(array('userid' => 12, 'data' => $payload));

// 或添加单一參数
$soap->add_param('data', $payload);

set_header($header, $content = null)

set_header 方法能让你設定一个 HTTP 請求表頭做为該請求的一部分。

靜態
參数
參数 預設 描述
$header 必要 HTTP 表頭條目的名稱。
$content
null
要被設定的表頭值。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 傳遞一个認證符記到後端伺服器
$soap->set_header('auth-token', 'WV4YaeV8QeWVVVOE');

如果你需要設定一个非 "Name: Value" 形式的表頭,在 $header 傳遞值,并且不要傳遞任何內容。

get_headers()

get_headers 方法能让你取回所有目前已定義的 HTTP 請求表頭。

靜態
參数 無。
回傳 陣列,所有設定的表頭。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 傳遞一个認證符記到後端伺服器
$soap->set_header('auth-token', 'WV4YaeV8QeWVVVOE');

// 回傳 array('auth-token:WV4YaeV8QeWVVVOE')
$headers = $soap->get_headers();

set_auto_format($auto_format)

set_auto_format 方法能让你切換自动格式化開關。 Since 1.7.2, this is switched of by default, and when switched off, you will have to parse the cURL response yourself.

靜態
參数
參数 預設 描述
$auto_format 必要 True 如果你希望回傳的回應被轉換为一个陣列,false 如果你想要存取它所接收到的。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 我們希望回傳的是一个陣列
$soap->set_auto_format(true);

Auto formatting has support for the following mime types:

  • application/xml
  • text/xml
  • application/json
  • text/json
  • text/csv
  • application/csv
  • application/vnd.php.serialized
so when enabled and the response is in one of these types, it will be processed automatically, and returned to your controller in the form of a PHP array.

Only enable this is the source of the data is trustworthy, and/or if you have validated the received input. JSON and serialized arrays could contain objects. Since their constructor will execute upon instantiation during auto formatting, it may lead to unintended code execution, possibly compromizing your server!

execute(array $additional_params = array())

execute 方法执行定義的 SOAP 請求。

靜態
參数
參数 預設 描述
$additional_params
array()
任何你想要傳遞給該請求的附加參数。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 执行該請求
$result = $soap->execute();

set_response($body, $status, $mime = null, $headers = array())

set_response 方法設定來自請求中接收的回應。

靜態
參数
參数 預設 描述
$body 必要 要被設定做为回應主體的資料。
$status 必要 建立回應的 HTTP 狀態。
$mime
null
該資料的 mime 类型。这是用在 auto_format 以轉換該主體为一个陣列。
$headers
null
任何你想設定的 HTTP 回應表頭。
回傳 Response,建立的回應物件。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 建立一个自訂的回應(SOAP 回應始終應为 XML)
$soap->set_response($body, $this->response_info('http_code', 200), 'xml', array('auth-token' => 'WV4YaeV8QeWVVVOE'));

一般情況下,你不應該使用这个方法。它是在請求执行之後用來預处理請求回應物件。

response()

response 方法回傳目前請求的回應。

靜態
參数 無。
回傳 Response,建立的回應物件。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 假設一些參数和選項已经被設定,并且执行
$soap->execute();

// 取回 Response 物件的結果
$result = $soap->response();

response_info($key = null, $default = null)

response_info 方法能让你取回一个 SOAP 回應值,或所有回應值。

靜態
參数
參数 預設 描述
$key
null
要取回的特定回應值。當你想要取回所有值時不要指定。
$default
null
當該請求值不存在時要被回傳的值。
回傳 混合,取決於請求值的資料类型。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 假設一些參数和選項已经被設定,并且执行
$soap->execute();

// 從回應表頭取得执行的 soap 动作
$size = $soap->response_info('SOAPAction', false);

此方法允許存取該回應的 HTTP 表頭。

set_function($function)

set_function 方法設定要在 SoapClient 执行的函式。

靜態
參数
參数 預設 描述
$function 必要 要呼叫的 SOAP 函式名稱。
回傳 Request_Soap,鍊結用
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 設定 soapcall 函式以取回一些使用者資料
$soap->set_function('GetUserInfo');

get_functions()

get_functions 方法回傳定義在 WSDL 中的函式列表。

靜態
參数 無。
回傳 可用的 SOAP 函式陣列
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 取回 SOAP 函式列表
$functions = $soap->get_functions();

这个方法需要 SoapClient 以在 WDSL 模式下運作。

get_request_xml()

get_request_xml 方法回傳上一次請求的 XML。

靜態
參数 無。
回傳 字串,上一次的 XML 請求
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 一些程式码……

// 取回上一次的 XML 請求。
$request = $soap->get_request_xml();

这个方法需要啟用 'trace' 選項。

get_request_headers()

get_request_headers 方法回傳上一次請求的表頭。

靜態
參数 無。
回傳 字串,來自上一次請求的 SOAP 表頭。可能包含新行。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 一些程式码……

// 取回上一次請求的表頭
$headers = $soap->get_request_headers();

这个方法需要啟用 'trace' 選項。

get_response_xml()

get_response_xml 方法回傳上一次回應的 XML。

靜態
參数 無。
回傳 字串,上一次的 XML 回應
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 一些程式码……

// 取回上一次的 XML 回應
$response = $soap->get_response_xml();

这个方法需要啟用 'trace' 選項。

get_response_headers()

get_response_headers 方法回傳上一次回應的表頭。

靜態
參数 無。
回傳 字串,來自上一次回應的 SOAP 表頭。可能包含新行。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 一些程式码……

// 取回上一次回應的表頭
$response = $soap->get_response_headers();

这个方法需要啟用 'trace' 選項。

get_types()

get_types 方法回傳支援类型的列表。

靜態
參数 無。
回傳 SOAP 类型的陣列,詳細描述所有結構和类型。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 取得對於此 web 服務的 WSDL 中所描述的类型列表
$types = $soap->get_types();

这个方法需要 SoapClient 以在 WDSL 模式下運作。

set_cookie 方法为後續請求設定請求 cookie。

靜態
參数
參数 預設 描述
$name 必要 cookie 名稱。
$value
null
cookie 值。如果沒有指定,該 cookie 将被刪除。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 在 HTTP 請求表頭中設定一个認證符記做为一个 cookie
$soap->set_cookie('auth-token', 'WV4YaeV8QeWVVVOE');

set_location($location)

set_location 方法能让你更改端點位置。

靜態
參数
參数 預設 描述
$location 必要 新端點的 URL。
範例
// 建立一个 Request_Soap 物件
$soap = Request::forge('http://soap.example.org/api/v1/this/info', 'soap');

// 更改請求的端點
$soap->set_location('http://moresoap.example.org/api/v2/other/info');