我正在尝试使用python flask构建Web服务API。当我在下面执行此代码时:
http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER='1234'&SESSIONKEY=94194202323
...工作正常。但是我无法将STUDENTNUMBER
传递给此函数。
我尝试了两种方法:
Concat构建一个字符串并将其传递给c.setopt(c.URL,)
此函数
a。方式1
b。方式2
C。方式3
通过那些方式,我会遇到相同的错误:
TypeError:
setopt
的无效参数
使用c.setopt(c.POSTFIELDS,post_data)传递变量
a。方式4
这样我得到了相同的错误:
不允许使用方法。请参阅,以构建对服务的有效请求
这样我将转到此链接:
b。方式5
这样我会遇到相同的错误
TypeError:
setopt
的无效参数
方法1:
student_url = " http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323"%student_number;
c.setopt(c.URL,student_url)
方法2:
c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323"%(student_number))
方法3:
c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323"%student_number)
方法4:
c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=%s&SESSIONKEY=94194202323")
c.setopt(c.POSTFIELDS, 'STUDENTNUMBER = 1234')
方法5:
post_data ={'STUDENTNUMBER' : '1234'}
c.setopt(c.URL,"http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&SESSIONKEY=94194202323")
c.setopt(c.POSTFIELDS, post_data)
c.setopt(pycurl.POST, 1)
我该如何做?
答案 0 :(得分:0)
这似乎不是关于Flask的问题。看来您正在尝试编写一些代码来查询API(可能是Flask提供的)。
我建议为此使用Python requests库,因为您随后可以将参数定义为字典,这更容易。 不要与Flask.request
混淆,这完全是另一回事!
import requests
url = 'http://localhost/Service/API/Services.svc/XMLService/Students'
params = {'SEARCHBY': 'StudentNo',
'STUDENTNUMBER': '1234',
'SESSIONKEY': 94194202323}
r = requests.get(url, params)
上面的最后一行发送了请求,您可以看到带有以下内容的完整URL:
>>> print (r.url)
http://localhost/Service/API/Services.svc/XMLService/Students?SEARCHBY=StudentNo&STUDENTNUMBER=1234&SESSIONKEY=94194202323
或打印响应代码,在我的情况下为404:
>>> print(r)
<Response [404]>
如果响应中包含数据,则可以通过r.text
进行访问:
>>> print (r.text)
I am the 404's response body.