2017-06-28 33 views
0

ZeepのPythonクライアントでSOAP APIを認証できません。私は2つのURLを持っています:python zeepでwsdl(非wsdlモード)を使わずにsoap apiを呼び出す方法は?ユーザーとパスワードの認証でロケーションURLを呼び出す

1)http://credotrade.stg-tradingcrm.com:8093/mex - これはwsdlサービスを指定します。利用可能なすべての操作を確認するには、Zeepコマンドpython -mzeepで呼び出すことができます。

2)https://credotrade.stg-tradingcrm.com:8094/CrmServiceBasic - これは、ログインとパスワードで保護されたAPIロケーションを提供する認証URLです。 $wsdlが最初のURLでフォームSoapClient($wsdl, $location, $username, $password)SoapClient recievesパラメータ、$location第二1、$username$passwordですが、私のユーザー名とパスワードであることを、私は考え出したこのAPIの使用可能な作業PHPクライアントを調べる

。私は新しいServiceProxyオブジェクトをctreateしようとした任意の成功がなければzeep.exceptions.Fault: An error occurred when verifying security for the message.

:私はWSDL URLを呼び出す場合、PHPのドキュメント以下

in non-WSDL mode, the location and uri options must be set, where location is the URL of the SOAP server to send the request to, and uri is the target namespace of the SOAP service

は、直接私は、セキュリティエラーが発生します。また、wsdl definitionのコードがapiの場所を指定したように見えるとすぐにZeep Client self.wsdlの初期化を修正しようとしました。

non-wsdl soap apiをPythonで使用するにはどうすればいいですか? non-wsdl apiを呼び出すクライアントを記述するのにZeepを使用できますか?

更新: phpのマニュアルが誤解を招くようです。私は質問How to create client with specific endpoints?にpython-zeep githubを実行します。 location URLは、非wsdlモードとは関係のない認証URLに過ぎないことを意味します。

service = client.create_service(
'{http://my-target-namespace-here}myBinding', 
'http://my-endpoint.com/acceptance/') 

は、誰もがcreate_serviceメソッドを介して真偽のURLを呼び出す方法を説明することができます:ZEEPの著者は、新しいServiceProxyオブジェクトを作成真偽のURLの問題を解決することが可能であることを示唆していますか?

答えて

0

sudsで認証URLを呼び出すことができるsoapクライアントを作成することは可能です。

from suds.client import Client 

Client(
    url=<wsdl file path>, 
    location=<authentication url>, 
    username=user, 
    password=password 
) 
関連する問題