PHP には Web サービスを呼び出すための SOAP 拡張機能が付属しています
php で Web サービスを呼び出す場合、php4 時代の人はすぐに nusoap を使用して呼び出すことを考えるでしょう。この nusoap は長い間更新されていませんでした。多くの抜け穴があるのではないかと心配しています。Web サービスを呼び出すには、組み込みの拡張機能を使用するのが良いのではないでしょうか。
前提条件: php5
の Web サービス拡張機能を開きます。
環境要件:
この拡張機能は GNOME xml ライブラリを使用します。このライブラリをダウンロードしてインストールするには、少なくとも libxml-2.5.4.
が必要です。
Linux では、
この拡張機能は、PHP が --enable-soap<br> で構成されている場合にのみ使用できます。
Windows の場合: <br>
php.ini ファイル <font face="Verdana">extension=php_soap.dll</font> で、コメント <br> を削除するだけです。
<br>
2 番目: 電話の練習。以下は私が最近電話した内容の要約です <br>
<br>
<p><font face="Verdana">マニュアルの抜粋: <br>
SoapClient->__soapCall()<br>
説明<br>
class SoapClient { </font></p>
<p><font face="Verdana">mixed __soapCall ( string function_name, array argument [, array options [,mixed input_headers [, array &output_headers]]] )</font></p>
<p><font face="Verdana">}<br>
これは、SOAP 呼び出しを行うために使用される低レベルの API 関数です。通常、WSDL モードでは、SOAP 関数を SoapClient メソッドとして呼び出すことができます。このメソッドは、soapaction が不明な場合、uri がデフォルトとは異なる場合に役立ちます。または SOAP ヘッダーを送信および/または受信するとき。
</font></p>エラーが発生した場合、SOAP 関数の呼び出しによって PHP が例外をスローしたり、例外が無効になっている場合は SoapFault オブジェクトを返したりすることがあります。関数呼び出しが SoapFault 例外をキャッチできなかったかどうかを確認するには、is_soap_fault( で結果を確認します。 )。<p><font face="Verdana">
</font></p>戻り値<p>
SOAP 関数は 1 つまたは複数の値を返すことができます。SOAP 関数によって返される値が 1 つだけの場合、__soapCall の戻り値は単純な値になります (整数、文字列など)。 __soapCall は、名前付き出力パラメータの連想配列を返します。
<font face="Verdana"><br>例</font>
例 1. SoapClient->__soapCall() の例</p>
<p>
<font face="Verdana"><br><?php </font></font></p>
<p><font face="Verdana">$client = new SoapClient("some.wsdl");<?php </font>
$client->SomeFunction($a, $b, $c);</font></p>
<p>
<font face="Verdana"><br>$client->__soapCall("SomeFunction", array($a, $b, $c));</font>
$client->__soapCall("SomeFunction", array($a, $b, $c), NULL,</p>
new SoapHeader(), $output_headers);<p><font face="Verdana">
<br>
<br></font>
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",</p>
'uri' => "http://test-uri/"));<font face="Verdana">
$client->SomeFunction($a, $b, $c);<p>
$client->__soapCall("SomeFunction", array($a, $b, $c));<br>
$client->__soapCall("SomeFunction", array($a, $b, $c),<br>
array('soapaction' => 'some_action',<br>
「uri」 => 「some_uri」));<br>
?><br>
<br>
<br> <br>
<br>1.WSDL モードでは、soapCall は、service.asmx ページを提供する asp.net Web サービスを使用します。マニュアルのほとんどの例は、呼び出しと表示が比較的簡単です。このタイプは比較的単純です。</p>
<p>SOAP によって送信されるプロトコル: </p>
<p>POST /servicepath/service.asmx HTTP/1.1</p>
ホスト: 211.186.1.4<p>
コンテンツタイプ: text/xml; charset=utf-8</p>
Content-Length: 長さ<p>
SOAPAction: "http://211.186.5.15/Service/ServiceMethod"<br>
<br><br><br>
</p>
<p>
<?xml version="1.0" encoding="utf-8"?><br>
<envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><br>
<body>
<br>
<servicemethod xmlns="http://211.186.5.15/Service"><br>
<param1></param1>
<br>呼び出し方法: <param2>
$client = new SoapClient("http://www.xxx.com/service/service.asmx?WSDL");</param2>
//パラメータ値をSOAPサーバーに送信 <br>
$param1 = "p1";<param3>
$param2 = "p2";</param3>
$param3 = "p3";<br>
</servicemethod>//serviceParam1、serviceParam2、serviceParam3は、送信されたパラメータ値に対応するパラメータ名(またはサービス側が提供するフィールド名) <br>
$param = array('serviceParam1' => $param1,'serviceParam2' => $param2,'serviceParam3' => $param3);</body>
<br>//メソッド名は ServiceMethod、パラメータ配列は $param です。デフォルトでは、パラメータ フィールドは渡されたパラメータ配列を示すために使用されます。</envelope>
$arr = $client->__soapCall('ServiceMethod',array('parameters' => $param));</p>
print_r($arr);<p>
<br><br>
2.非 WSDL モードの場合、この場合、soapaction は不明です<br>
<br>SOAP 送信プロトコル<br></p>
<p>POST /services/SoapMethod?WSDL HTTP/1.1<br>
ホスト: 220.211.1.12:8088<br>
接続: キープアライブ<br>
ユーザーエージェント: PHP-SOAP/5.2.5<br>
コンテンツタイプ: text/xml; charset=utf-8<br>
SOAPAction: "urn:SoapMethod#ServiceMethod"<br>
コンテンツの長さ: 1297</p>
<p><?xml version="1.0" encoding="UTF-8"?><br>
<envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:SoapMethod" 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:ns2="http://220.211.1.12" soap-env:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/"><br>
<body>
<br>
<servicemethod><br>
<servicemethodsection xsi:type="ns2:ServiceObjectType"><br>
<param1 xsi:type="xsd:string">01019</param1><br>
<param2 xsi:type="xsd:long">10</param2><br>
<param3 xsi:type="xsd:long">0</param3><br>
<param4 xsi:type="xsd:long">11</param4><br>
</servicemethodsection><br>
</servicemethod><br>
</body>
<br>
</envelope></p>
<p>呼び出し方法: <br>
2.1 パラメータを渡します: <br>
{<br> を試してください
$client = 新しい SoapClient(null, <br>
array('location' => 'http://192.168.1.180:8088/services/SoapPage?WSDL','uri' => 'http://192.168.1.180:8088/services/')); <br>
$result = $client->__soapCall('ServiceMethod', array('fieldName' => "data")); // パラメータを配列形式で渡します <br>
//$result = $client->__soapCall('ServiceMethod', array(new SoapParam("data", 'fieldName'))); // パラメーターを構築し、サーバー パラメーターを構築する形式でサーバーに渡します <br>
var_dump($result);<br>
}<br>
catch (例外 $e) <br>
{<br>
printf("メッセージ = %s",$e->__toString());<br>
}<br>
<br>
付属:マニュアル解説<br>
class SoapParam { </p>
<p>__construct (混合データ、文字列名)</p>
<p>}<br>
パラメータ</p>
<p>データ<br>
渡すか返すデータ。このパラメータを PHP 値として直接渡すこともできますが、この場合は paramN という名前が付けられるため、SOAP サービスはそれを理解できない可能性があります。
</p>名前<p>
パラメータ名<br>
</p>2.2 複数のパラメータを渡す: <p>
サーバーが非 wsdl でオブジェクト パラメーターを渡す必要があり、オブジェクトに複数の属性が含まれている場合、コードは次のようになります <br>
</p>{<p>を試してください
$client = new SoapClient(null, array('location' => 'http://192.168.1.180/services/SoapPage?WSDL','uri' => 'urn:SoapName')); URI アドレスである場合もあります <br>
</p> クラス Obj{ <p>
パブリック $param1 = '01019';<br>
public $param2 = 10;<br>
public $param3 = 0;<br>
public $param4 = 11;<br>
}<br>
</p> $struct = new Obj() //サーバーが渡す必要のあるオブジェクトを作成します<p>
//サーバーが異常で、渡されたパラメーターの一部が、使用しているプログラミング言語で使用できないデータ型である場合、たとえば、私は PHP を使用していますが、Java Long 型はありません (一般に、Web サービスを実行する場合は、汎用性を考慮する必要があります) 、データ型はすべて string 型または int 型であり、サーバー側で変更する方法はありません。パラメータは必須です)。この処理は、SOAP 送信内の XML を変換するだけであり、実際に転送されるデータ型ではありません。
$struct->param1 = iconv('gb2312','utf-8',$struct->param1);<br>
$struct->param2 = 新しい SoapVar($struct->param2,XSD_LONG);<br>
$struct->param3 = 新しい SoapVar($struct->param3,XSD_LONG);<br>
$struct->param4 = 新しい SoapVar($struct->param4,XSD_LONG);<br>
<br> //シリアル化されたオブジェクトで SoapVar を使用する方法は、PHP マニュアルの SoapVar の説明を参照します。各パラメーターはわかりやすく説明されています。
$soapstruct = new SoapVar($struct, SOAP_ENC_OBJECT, "ServiceObjectType", "http://soapinterop.org/xsd"); //オブジェクトのシリアル化、違いに注意してください。SOAP オブジェクトのシリアル化では、serialize
</p>
$result = $client-> ServiceMethod(new SoapParam($soapstruct, 'ServiceMethodSection'));
//$result = $client->__soapCall('ServiceMethod', array(new SoapParam($soapstruct, 'ServiceMethodSection')));<p>
<br>
var_dump($result);<br>
} catch (例外 $e) {<br>
printf("メッセージ = %s",$e->__toString());<br>
}<br>
<br>添付: PEAR マニュアルにある SoapVar の説明<br>
SoapVar<br>
SoapVar -- 変数の Returntype を変更します<br>
説明</p>
<p>新しい SoapVar (混合変数、long 型)<br>
<br>警告 <br>
この関数は実験的です。つまり、この関数の動作、具体的にはここに記載されているものはすべて、このパッケージの将来のリリースで予告なく変更される可能性があります。この関数は自己責任で使用してください。 >
</p>
変数の戻り値の型を変更して、たとえば <p> 以外のアプリケーションでより適切に動作できるようにすることができます。
</p>type は次のいずれかである必要があります <p></p>
<p>XSD_1999_TIMEINSTANT <br>
XSD_STRING <br>
XSD_BOOLEAN <br>
XSD_DECIMAL <br>
XSD_FLOAT <br>
XSD_DOUBLE <br>
XSD_DURATION <br>
XSD_DATETIME <br>
XSD_TIME <br>
XSD_DATE <br>
XSD_GYEARMONTH <br>
XSD_GYEAR <br>
XSD_GMONTHDAY <br>
XSD_GDAY <br>
XSD_GMONTH <br>
XSD_HEXBINARY <br>
XSD_BASE64BINARY <br>
XSD_ANYURI <br>
XSD_QNAME <br>
XSD_NOTATION <br>
XSD_NORMALIZEDSTRING <br>
XSD_TOKEN <br>
XSD_LANGUAGE <br>
XSD_NMTOKEN <br>
XSD_NAME <br>
XSD_NCNAME <br>
XSD_ID <br>
XSD_IDREF <br>
XSD_IDREFS <br>
XSD_ENTITY <br>
XSD_ENTITYS <br>
XSD_INTEGER <br>
XSD_NONPOSITIVEINTEGER <br>
XSD_NEGATIVEINTEGER <br>
XSD_LONG <br>
XSD_INT <br>
XSD_SHORT <br>
XSD_BYTE <br>
XSD_NONNEGATIVEINTEGER <br>
XSD_UNSIGNEDLONG <br>
XSD_UNSIGNEDINT <br>
XSD_UNSIGNEDSHORT <br>
XSD_UNSIGNEDBYTE <br>
XSD_POSITIVEINTEGER <br>
</p></font><p>
<br>
HTTP协议精解.rar<br>
SOAP协议规范.rar<br>
</p>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。
