用python向web服务发送POST请求

2024-10-04 05:31:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用几个soapweb服务,如果我以请求的形式发送xml文件,那么我得到的响应没有问题。但是我只想发送一些参数,而不是所有的xml文件

要像using REQUESTS库那样发出请求:

import requests
with open("/home/WSProject/xmlws/media/QueryTest.xml","r") as
         request_data = archivo.read()
target_url = "http://1.1.1.1:4384/services/BbServices?wsdl"
headers = {'Content-type':'text/xml'}
data_response = requests.post(target_url, data=request_data, headers=headers).text
print data_response

我作为请求发送的xml文件如下所示:

^{pr2}$

我从一个HTML表单中得到参数的值,参数是Identity和BillCycle

<bbs:SubAccessCode>
<bbc:Identity>98705702</bbc:Identity>
</bbs:SubAccessCode>
<bbs:BillCycle>20151001</bbs:BillCycle>

现在我用参数的值覆盖了一个文件,并将该文件作为请求发送。在

我试图只发送一些参数或从web服务获取所有方法的列表,但是使用SUDS时遇到了一个错误

suds.transport.TransportError: HTTP Error 403: Forbidden

如果可能的话,只发送参数而不是使用sud或请求的整个文件?在


Tags: 文件texturltargetdata参数responserequest
1条回答
网友
1楼 · 发布于 2024-10-04 05:31:14

时间过去了,但也许有人会发现它很有用:

这是我的项目片段。可以直接向方法添加参数。在

SUDS在这方面非常强大,当然可以看看docs。在

from Tkinter import *
from suds.client import *


class SoapClass:

    def __init__(self, master):

        self.client = Client('http://www.webservicex.net/ConvertWeight.asmx?WSDL', username='', password='', faults=False)

        Button(master, text='Call', command=self.request).pack()

    def request(self):

        methodName = 'ConvertWeight'

        params = [80, 'Kilograms', 'Grams']

        MethodToExecute = getattr(self.client.service, methodName)

        try:
            response = MethodToExecute(*params)
        except WebFault as e:
            response = e

        print(response)

root = Tk()
app = SoapClass(root)

root.mainloop()

相关问题 更多 >