使用请求传递JSON函数参数


Pass JSON function arguements using requests

我试图使用游击邮件API位于http://api.guerrillamail.com/ajax.php,但我遇到了麻烦与"set_email_user"函数,因为它需要我张贴参数与函数。

我从来没有使用过PHP,也没有使用过JSON,所以我不知道如何正确地将参数传递给这样的函数。

我使用python 2.7库请求使事情更容易。

    s = requests.session()
    payload = {'f':'get_email_address'} 
    headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13'}
    req2 = s.post('http://api.guerrillamail.com/ajax.php', data = payload, headers = headers)
    print req2.text #prints out the current email address
    payload = {'f':'set_email_user:u''sark'''} #here is the issue. I cannot figure out how to pass a string argument into the set_email_user function
    req = s.post('http://api.guerrillamail.com/ajax.php', data = payload, headers = headers, cookies = s.cookies)
    print req.text 
    payload = {'f':'get_email_address'}
    req2 = s.post('http://api.guerrillamail.com/ajax.php', data = payload, headers = headers, cookies = s.cookies)
    print req2.text #prints the same email address as above

看一下文档,看看字里行间的意思。顶部有一个大标题,构建了"参数"的概念;底部附近的一些示例代码似乎在说,如果是对数据的"查询",那么发送一个GET请求,并在查询字符串中编码参数URL,例如:

payload = {'f':'get_email_address'}
req2 = s.get('http://api.guerrillamail.com/ajax.php', params=payload)
print req2.text #prints out the current email address

…,但如果你正在修改数据,发送一个POST与参数URL编码在请求体:

payload = {'f':'set_email_user', 'email_user': 'sark'}
req2 = s.post('http://api.guerrillamail.com/ajax.php', data=payload)
print req2.text #prints out the current email address

请求文档的这一部分是用于GET参数的:

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get("http://httpbin.org/get", params=payload)

这个部分是用于POST数据的。

最后,不要对你的User-Agent撒谎。根据网站,API是开放的,并且是公开的;Python应该没问题,而且您不需要模糊您的User-Agent。