python title大小 - 公共免費的Web服務測試肥皂客戶端



matplotlib position (2)

這裡有一堆:

http://www.webservicex.net/WS/wscatlist.aspx

只需谷歌的“免費Web服務”或“打開Web服務”,你會發現噸的開放SOAP端點。

請記住,您可以通過將?WSDL添加到url來從任何ASMX端點獲取WSDL。

是否有任何公開的SOAP 1.2 / WSDL 2.0兼容的免費Web服務用於測試基於Python的SOAP客戶端庫(例如Zolera SOAP基礎結構 )?

到目前為止,我認為Google Web API可能是唯一的選擇。

否則,如何測試符合SOAP 1.2的客戶端庫?


我最近偶然發現了同樣的問題。 以下是我的解決方案的簡介:

基本組成代碼塊需要

以下是客戶端應用程序所需的基本代碼塊

  1. 會話請求部分:向提供者請求會話
  2. 會話認證部分:向提供商提供憑證
  3. 客戶端部分:創建客戶端
  4. 安全標題部分:將WS-Security標題添加到客戶端
  5. 消耗部分:根據需要消耗可用的操作(或方法)

你需要什麼模塊?

許多人建議使用Python模塊,比如urllib2; 然而,沒有一個模塊能夠工作 - 至少對於這個特定的項目來說。

所以,這裡是你需要獲得的模塊列表。 首先,您需要從以下鏈接下載並安裝最新版本的肥皂水:

pypi.python.org/pypi/suds-jurko/0.4.1.jurko.2

此外,您需要分別從以下鏈接下載和安裝請求和suds_requests模塊(免責聲明:我是新來發布此處的,所以我現在不能發布多個鏈接)。

pypi.python.org/pypi/requests

pypi.python.org/pypi/suds_requests/0.1

一旦你成功下載並安裝了這些模塊,你就很好。

代碼

按照前面概述的步驟,代碼如下所示:Imports:

import logging
from suds.client import Client
from suds.wsse import *
from datetime import timedelta,date,datetime,tzinfo
import requests
from requests.auth import HTTPBasicAuth
import suds_requests

會話請求和認證:

username=input('Username:')
password=input('password:')
session = requests.session()
session.auth=(username, password)

創建客戶端:

client = Client(WSDL_URL, faults=False, cachingpolicy=1, location=WSDL_URL, transport=suds_requests.RequestsTransport(session))

添加WS-Security標題:

...
addSecurityHeader(client,username,password)
....

def addSecurityHeader(client,username,password):
    security=Security()
    userNameToken=UsernameToken(username,password)
    timeStampToken=Timestamp(validity=600)
    security.tokens.append(userNameToken)
    security.tokens.append(timeStampToken)
    client.set_options(wsse=security)

請注意,這個方法創建了圖1中描述的安全頭部。 因此,您的實施可能會有所不同,具體取決於您正在使用的服務的所有者提供的正確安全標頭格式。

消耗相關的方法(或操作):

result=client.service.methodName(Inputs)

日誌記錄

在這樣的實現中的最佳實踐之一就是記錄以查看通信是如何執行的。 如果有問題,它使調試變得簡單。 以下代碼執行基本日誌記錄。 但是,除了代碼中描述的內容之外,您還可以記錄通信的許多方面。

logging.basicConfig(level=logging.INFO) 
logging.getLogger('suds.client').setLevel(logging.DEBUG) 
logging.getLogger('suds.transport').setLevel(logging.DEBUG)

結果:

這是我的結果。 請注意,服務器返回HTTP 200.這是HTTP請求響應的標準成功代碼。

(200, (collectionNodeLmp){
   timestamp = 2014-12-03 00:00:00-05:00
   nodeLmp[] = 
      (nodeLmp){
         pnodeId = 35010357
         name = "YADKIN"
         mccValue = -0.19
         mlcValue = -0.13
         price = 36.46
         type = "500 KV"
         timestamp = 2014-12-03 01:00:00-05:00
         errorCodeId = 0
      },
      (nodeLmp){
         pnodeId = 33138769
         name = "ZION 1"
         mccValue = -0.18
         mlcValue = -1.86
         price = 34.75
         type = "Aggregate"
         timestamp = 2014-12-03 01:00:00-05:00
         errorCodeId = 0
      },
 })




python web-services soap soappy zsi