問題タブ [soapserver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP SoapServer で wsdl の any schema 要素を使用する
PHP SoapServer を使用して、wsdl で XSD 要素を動作させることができないようです。私が読んだすべてによると、他のいくつかの企業が「緩い型付き」wsdlsをどのように実装しているかを見ています。レコード情報を取得および送信するには、以下で十分です。
残念ながら、php SoapServer クラスは、厳密に定義されていない要素を破棄しているようです。私が取得するのは、作成リクエストで空のレコードであり、検索/フィルターリクエストで空のレコードを送信しますが、フィールドは SoapServer 処理の前に明らかにそこにあります。
このように欠落しているフィールドを具体的に定義すると...
その後、すべてがうまくいき、それらのフィールドがクライアントとの間で受け渡されます。何か不足していますか?すべての名前空間オプション ##any、##local などと processContents オプションを試しました。スキーマに詳細が記載されているかどうかに関係なく、レコードの追加フィールドを送信/返すことができるようにしたいだけです。
php - 無制限のパラメーターを使用した wsdl 操作
別のサービスからデータを渡す SoapServer の WSDL を作成する必要があります。提供されたデータの構造は次のとおりです。
これは、メソッドを作成する必要があることを意味します
オペレーションに提供されるパラメーターの数を知ることは不可能です。
解決策として、パラメーターなしでメソッドの WSDL を作成しようとしていますが、このメソッド内では関数func_get_args()
を使用してすべてのパラメーターを取得します。
残念ながら、まだ適切な WSDL を作成できず、これが可能かどうかもわかりません。
私のWebサービスが受け取るべき正確なデータ(例)は次のとおりです。
そのような種類の WSDL の経験や、提供されたデータ構造を取得する方法についてのアイデアはありますか?
パラメータ名として考慮できる可能性について考えたので、他のデータをcomplexTypeとして使用できます。たぶん、WSDL はいくつかのトリックを提供します...
web-services - symfony2 を使用した SOAP Web サービス
symfony2 で Web サービスを作成する必要があります。公式記事http://symfony.com/doc/current/cookbook/web_services/php_soap_extension.html を読んでください。このファイルは何ですか?symfony の SOAP に関するドキュメントはあまり見つかりませんでした。これについて何か助けてください。
php - 送信された XML をサーバー側で PHP の SOAP で変更する
PHP の SoapClient と SoapServer、WSDL モードについての質問です。
たとえば、データを含む XML の特定の部分のダイジェストを作成する必要があります。SoapClient を使えば簡単です。__doRequest()
class からメソッドをオーバーロードし、特定の要素のハッシュを作成し、それを内SoapClient
の要素としてアタッチします。次に、結果の XML を SOAPServer 呼び出し元に送信します。<Hash></Hash>
<SOAP-ENV:Header/>
parent::__doRequest()
応答 XML についても同じことを行う必要があります。サーバー側では問題があります。サーバーはネストされた配列またはオブジェクトとしてのみデータを送信できるようで、クライアント側の応答 XML に何らかの形で挿入されます。の応答でXML を送信しようとしSoapServer
ましたが、空の XML が返されます。
サーバー側でXMLを解析して変更する必要があります(ハッシュ、デジタル署名などを作成する)が、これまでのところ、どこを検索してもその方法が見つからないので、助けていただければ幸いです。ありがとう。
php - soapServer応答でカスタムXML応答を返す方法は?
XML 入力を受け取り、カスタム XML 出力を返す必要がある SOAP Web サービスをセットアップしています。これらはすべて WSDL で定義されます。これにsoapServerを適用します(誰かが私の目標を達成するのを妨げるバグがあると言うまで:-))。
私はまだカスタム XML を返すことができませんでした。入力 XML に "Response" を加えたものに等しい標準のルート要素名を持つ、WSDL に基づいていると思われる結果が得られます。実はそれには私も驚いているので、副次的な質問として、それがなぜなのか、影響を受けているのかどうか疑問に思っています。もちろん、応答を作成するときに WSDL 定義が何らかの形で使用されるのは良いことですが、前述のとおり、応答でカスタム XML を取得する方法がわかりません。
私はこれまでに得ました:
WSDL
入力 XML
現在のphp
上記で使用されている XSLT は、属性を変更するものにすぎません。また、一時的にルート名をサーバーから返された名前に常に変更します (念のため :-))
返される XML は次のようになると思います
しかし、代わりに
上記の php で $dom の内容をデバッグすると、返そうとする XML が正確に表示されます (もちろん、入力と同じように SOAP エンベロープ/ボディにラップされます)。
どこが間違っていますか?返された http 応答コンテンツにカスタム XML を取得するにはどうすればよいですか?
php - 複合メッセージを入力して SoapServer 応答 XML として返す方法は?
複合メッセージを返す SOAP Web サービスをセットアップしています。
このメッセージの有効な例は次のとおりです。
これはすべて wsdl できちんと定義されています。
私はサーバー側の test_soap.php を際限なく正しくするために取り組んできましたが、成功しません。XML を返す時点まで正常に動作しているものの一部は次のとおりです。
適切な応答を得るために考えられることはほぼすべて試しましたが、うまくいきませんでした。以前の一部のみを含むメッセージに対して同じことを行うことができました (私の最新の質問と回答を参照してください)。
しかし、ここでは 2 つのメッセージ部分があるため、成功しません。
$xml コンテンツのデバッグは、SOAP サーバーがエンベロープ + ボディにそれをラップさせた後、まさに私が見たいと思っていたものであることを示しています。
実際には、メッセージ部分が 1 つだけの場合とは状況が異なります。最初に XML 宣言を取り除いて、それを返す限り、メッセージ部分から新しい SoapVar を作成できます。ここでは、戻り値が 2 つの部分で構成されているため、同じことはできません。
だから、私は今、次のうちどれをやるべきか疑問に思っています。
- 応答メッセージのクラスを宣言し、それを入力して返します
- SoapVar および/または SoapParam でいくつかの魔法を実行します (注意してください、私はすでに多くのことを試しました)
- 配列と SoapVar を使っていくつかの魔法を実行します (すでに多くのことを試しました)
- どういうわけか (どのように?) wsdl に助けを求める
- まったく違うもの
- SoapServer でこの悪夢全体を終了し、独自の http 応答をゼロから作成します
これについてのすべての助けに感謝しますので、すべての石けんの専門家は、この質問に答えることを躊躇しないでください!
添加
一時的な回避策として、WSDL を編集し、応答メッセージを 1 つの部分だけに変更しました。これにより、予想される 2 つの部分の連結として予想されるメッセージを渡すことができました (または、返された値に対して SoapVar によって定義された構造の WSDL チェックが行われていないため、その他のメッセージも同様です)。
これに関する奇妙な点は、もちろん、連結が有効な XML ではなく、周囲のルート要素が欠けていることですが、SoapVar はとにかくそれを解析できます。
SoapVar と SoapParam / SoapServer の詳細な洞察を持っている人は、2 つのメッセージ部分を返すことが可能かどうかを説明できますか?
そして、その方法を説明しますか?
または、代わりに、他の SOAP 設定でそれを行う方法について詳細な情報を提供してください。
php - PHP SoapServer から JSON オブジェクトを返す
XML ドキュメントの代わりに JSON オブジェクトを応答として送信するように PHP SoapServer に強制するにはどうすればよいですか?
ありがとう。
php - wsdl メッセージのパーツ名が同じ場合、SoapServer は関数を正しくマップしません。
これが php のバグ (不適切な実装) なのか、それとも私のバグなのか (SOAP プロトコルの理解が不十分/SoapServer を使用するのはこれが初めてであるため) なのかはわかりません。
同じ操作が 2 つ以上あるwsdl:part
場合 (wsdl:message
操作と soapAction が異なっていても)、SoapServer
常に最初の関数が呼び出されることに気付きました。この例では、2 つの関数がmultiply2
あり、multiply4
どちらもnum
(int) を入力パラメーターとして持っています。今日、部品名 (service1.wsdl) を変更すると、関数は正しくマップされます。
ただし、バグのように見える別の名前を使用してもかまいません。何か不足していますか、それともバグを開く必要がありますか?
これは私が作成した簡単な例です:
非常に単純な php クラス
SoapServer を少し変更しました (ロギングを追加 -この投稿から適応) が、プレーンな SoapServer も使用している場合に問題が発生します。
これはクライアント コードです。
service.wsdl
とservice1.wsdl
は基本的に同じファイルですが、次の 2 つの例外があります。
- それらのエンドポイントは異なります(各エンドポイント
service.wsdl
へのポイントhttp://tests.simsimy.info/web/service.php
と各エンドポイントservice1.php
へhttp://tests.simsimy.info/web/service1.php
のポイントは、適切な wsdl を使用して をロードしますSoapServer
) - in
service.wsdl
multiply2Request
とmultiply4Request
as part name -num
を持ちますが、 inservice1.wsdl
の名前は異なります (num2
とnum4
)
これは、service.wsdl の完全な wsdl です。
の変更部分service1.wsdl
:
クライアント コードを実行すると、次の出力が得られます。
web-services - wsdlを使用したPerlSoapサービス
SOAP :: Liteを使用してSOAPサービスを作成しようとしていますが、値が返されません。初期化されていない値$resultの使用エラーがsoap_client.plの6行目に出力されます。
インストールされているperlモジュール:
Apacheモジュール:
ソープサーバー:math.pl
ソープクライアント:soap_client.pl
Wsdlファイル:math.wsdl
soap_client.plを実行すると、次のエラーが発生します。初期化されていない値$ resultを使用すると、soap_client.plの6行目で印刷されます。