标签: suds

使用SUDS测试WSDL

有谁知道一个很好的SUDS教程.我正在尝试对WSDL文件运行测试,我无法找到有关如何执行此操作的任何信息.SUDS与SOAPy有很大的不同吗?任何人都建议它对存储在WSDL文件中的函数运行冒烟测试.

我已经读过Python 2.6+不再支持SOAPAy.这是真的?

我有一个我输入的WSDL文件:

from suds.client import Client

client = Client('http://10.51.54.50/ptz.wsdl')

client.service.GetNode()
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

    in open
    response = self._open(req, data)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 407, in _open
    '_open', req)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 367, in  _call_chain
    result = func(*args)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1146, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1121, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 111] Connection refused>
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么会这样?

我可以通过浏览器连接到此文件.我已经安装了所有的泡沫包.是否还需要其他设置?

python soap suds

7
推荐指数
1
解决办法
2万
查看次数

有没有人将soap.py或suds与python-ntlm结合起来?

我想用suds或soap.py替换应用程序当前(严重破坏和狡猾)基于cURL(基于cURL 命令行!)的SOAP客户端.麻烦的是,我们必须联系MS CRM服务,因此必须使用NTLM.由于各种原因,NTLM代理使用起来有点痛苦,所以我正在研究python-ntlm来提供这种支持.

可以使用suds或soap.py来使用此身份验证方法吗?如果是这样,怎么样?如果没有,任何其他建议都会很棒.

编辑

如下所述,suds已经开箱即用支持python-ntlm.

python soap ntlm soappy suds

7
推荐指数
1
解决办法
3741
查看次数

如何在使用Python Suds的Web服务时修复unicode问题

我正在努力与Commission Junction(CJ)的HORRIBLE网络服务合作.我可以让客户端连接并从CJ接收信息,但是他们的数据库似乎包含一堆导致UnicideDecodeError的坏字符.

现在我在做:

from suds.client import Client
wsdlLink = 'https://link-search.api.cj.com/wsdl/version2/linkSearchServiceV2.wsdl'
client = Client(wsdlLink)
result = client.service.searchLinks(developerKey='XXX', websiteId='XXX', promotionType='coupon')
Run Code Online (Sandbox Code Playgroud)

这个工作正常,直到我打出一个类似'CorpNet®10%Off Off Service'的记录,然后®导致它破坏我得到

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 758: ordinal not in range(128)" error.
Run Code Online (Sandbox Code Playgroud)

有没有办法在我的头上对®进行编码,这样当SUDS读入结果时它不会中断?

更新:澄清一下,®来自CJ数据库,并在他们的回复中.所以我需要在SUDS处理响应之前解码非ascii字符.我不确定在SUD中如何(或是否)这样做.

python soap wsdl suds

7
推荐指数
1
解决办法
7967
查看次数

肥皂客户端使用Suds

用Python调用Soap

嗨,上面是我之前关于肥皂的问题.在那里我传递一维数组.现在我的问题是我需要将2D数组传递给以下Soap架构.

请求架构

<?xml version="1.0" encoding="utf-8"?>
<soap: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/">
  <soap:Body>
    <CalculateWeb2DObjectArray xmlns="http://tempuri.org/">
      <HCID>string</HCID>
      <jaggedobjDataMICRO>
        <ArrayOfAnyType>
          <anyType />
          <anyType />
        </ArrayOfAnyType>
        <ArrayOfAnyType>
          <anyType />
          <anyType />
        </ArrayOfAnyType>
      </jaggedobjDataMICRO>
      <numeratorID>int</numeratorID>
    </CalculateWeb2DObjectArray>
  </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

响应模式

 <?xml version="1.0" encoding="utf-8"?>
    <soap: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/">
      <soap:Body>
        <CalculateWeb2DObjectArrayResponse xmlns="http://tempuri.org/">
          <CalculateWeb2DObjectArrayResult>
            <ArrayOfAnyType>
              <anyType />
              <anyType />
            </ArrayOfAnyType>
            <ArrayOfAnyType>
              <anyType />
              <anyType />
            </ArrayOfAnyType>
          </CalculateWeb2DObjectArrayResult>
        </CalculateWeb2DObjectArrayResponse>
      </soap:Body>
    </soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

我的守则

from suds.xsd.doctor import Import, ImportDoctor
from suds.client import Client

# enable logging to see transmitted XML
import logging
logging.basicConfig(level=logging.INFO) …
Run Code Online (Sandbox Code Playgroud)

python soap suds

7
推荐指数
1
解决办法
9957
查看次数

使用SUDS的空cookiejar

我在Linux Slackware 13.0上使用python 2.6.2运行SUDS 0.4.当我使用此代码调用SOAP方法时:

from suds.client import Client

client = Client(url='file:acctWeb.wsdl',
                location='http://10.242.69.4:8088/pfmaccess')

res = client.service.login(login='user',password='passwd')
Run Code Online (Sandbox Code Playgroud)

我收到以下回复:

DEBUG:suds.transport.http:received:
CODE: 200
HEADERS: {'set-cookie': 'OSP_Ref=0000000573800052;Domain=10.242.69.4:8088;Path=/pfmaccess', 'content-length': '26541', 'content-type': 'text/xml; charset=utf-8', 'connection': 'close', 'server': 'Alcatel-Lucent OSP 2.4'}
Run Code Online (Sandbox Code Playgroud)

>>> client.options.transport.cookiejar
<cookielib.CookieJar[]>
Run Code Online (Sandbox Code Playgroud)

表明没有可用的cookie.可能是什么原因?我无法使用SOAP API,因为我需要传递响应cookie中发送的凭据.

请帮帮我.

BR

rjan

python linux soap suds cookiejar

7
推荐指数
1
解决办法
1508
查看次数

如何在Python中使用WSDL创建arrayType(使用suds)?

环境:

  • Python v2.6.2
  • 泡沫v0.3.7

我使用的WSDL(服务器)有以下架构子部分(我试图用纯文本清楚地写出来) -


[第1节]

searchRequest: (searchRequest){
    userIdentification = (userIdentification){
        username = ""
        password = ""
        }
    itineraryArr = (itineraryArray){
        _arrayType = ""
        _offset = ""
        _id = ""
        _href = ""
        _arrayType = ""
        }
   ...
   ...
Run Code Online (Sandbox Code Playgroud)

[第2节]

itinerary: (itinerary){
    departurePoint = (locationPoint){
        locationId = None
        radius = None
        }
    arrivalPoint = (locationPoint){
        locationId = None
        radius = None
        }
   ...
   ...
Run Code Online (Sandbox Code Playgroud)

'userIdentification'没有问题(这是一种"简单"类型)

但是,'itineraryArr'是一个'行程'数组,我不知道如何使用python来创建XML数组.

例如,我尝试了几种组合

itinerary0 = self.client.factory.create('itinerary')
itineraryArray = self.client.factory.create('itineraryArray')
itineraryArray = [itinerary0]
searchRequest.itineraryArr = itineraryArray …
Run Code Online (Sandbox Code Playgroud)

python xml arrays wsdl suds

6
推荐指数
2
解决办法
9723
查看次数

在suds中添加属性

我必须用肥皂水和Python做肥皂请求

<soap:Body> 
    <registerOrder> 
        <order merchantOrderNumber="" description="" amount=""  currency=""  language=""  xmlns=""> 
             <returnUrl>http://mysafety.com</returnUrl> 
        </order> 
    </registerOrder> 
</soap:Body>
Run Code Online (Sandbox Code Playgroud)

如何在registerOrder中添加属性?

python web-services suds

6
推荐指数
2
解决办法
5966
查看次数

虽然我期望它,但是并没有重用缓存的WSDL和XSD

我很确定suds并没有像我期望的那样缓存我的WSDL和XSD .以下是我知道没有使用缓存对象的方法:

  1. 创建客户端大约需要30秒: client = Client(url)
  2. 记录器条目显示在整个30秒内一致消化XSD和WSDL文件
  3. Wireshark在整个30秒内向存储XSD和WSDL文件的服务器显示一致的TCP流量
  4. 每次运行程序时,我都会看到缓存中的文件正在更新

我有一个小程序,它创建一个suds客户端,发送一个请求,获取响应,然后结束.我的期望是每次运行程序时,都应该从文件缓存中获取WSDL和XSD文件,而不是从URL中获取.这就是为什么我认为:

  1. client.options.cache.duration 被设置为 ('days', 1)
  2. client.options.cache.location设置为c:\docume~1\mlin\locals~1\temp\suds,我看到每次运行程序时生成并重新生成缓存文件
  3. 有一会儿,我想也许缓存不会在程序运行之间重用,但我不认为如果是这样的话会使用文件缓存,因为内存缓存会做得很好

我是否误解了suds缓存应该如何工作?

suds

6
推荐指数
1
解决办法
2786
查看次数

Python SUDS返回XML以外的类型

我正在使用一些有点非标准的SOAP Web服务.对webservice的大多数调用都会按预期返回标准SOAP XML,但是一个调用特别会返回一个JSON字符串.这会破坏客户端的xml解析器.

我的问题是; 有没有办法在SUDS中的特定web方法上指定返回类型,以便它不会尝试通过xml解析器运行它?我只想要原始的JSON响应.

python json suds

6
推荐指数
1
解决办法
912
查看次数

如何在Python中使用Suds提取方法

我想提取所有方法,并希望使用如何使用python进行自动化来发送一些参数.

我只希望方法作为用户输入并将参数发送到方法.我怎样才能做到这一点?

from suds.client import client
url="name fo the url"
client=Client(url)
Suds ( https://fedorahosted.org/suds/ )  version: 0.4 GA  build: R699-20100913

Service ( Services ) tns="http://www.altoromutual.com/bank/ws/"
Prefixes (1)
ns0 = "http://www.altoromutual.com/bank/ws/"
Ports (2):
(ServicesSoap)
 Methods (3):
    GetUserAccounts(xs:int UserId, )
    IsValidUser(xs:string UserId, )
    TransferBalance(MoneyTransfer transDetails, )
 Types (4):
    AccountData
    ArrayOfAccountData
    MoneyTransfer
    Transaction
  (ServicesSoap12)
 Methods (3):
    GetUserAccounts(xs:int UserId, )
    IsValidUser(xs:string UserId, )
    TransferBalance(MoneyTransfer transDetails, )
 Types (4):
     AccountData
    ArrayOfAccountData
    MoneyTransfer
    Transaction 
Run Code Online (Sandbox Code Playgroud)

suds python-2.7

6
推荐指数
1
解决办法
2万
查看次数

标签 统计

suds ×10

python ×8

soap ×5

wsdl ×2

arrays ×1

cookiejar ×1

json ×1

linux ×1

ntlm ×1

python-2.7 ×1

soappy ×1

web-services ×1

xml ×1