【问题标题】:Pass JSON function arguements using requests使用请求传递 JSON 函数参数
【发布时间】:2014-03-21 04:37:38
【问题描述】:

我正在尝试使用位于 http://api.guerrillamail.com/ajax.php 的 guerrillamail API,但我在使用“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

【问题讨论】:

    标签: php python json python-requests


    【解决方案1】:

    我觉得有点reading the docs 和字里行间的阅读。顶部有一个大标题,构建了“参数”的概念;靠近底部的一些示例代码方式似乎是说,如果它是对数据的“查询”,则发送一个带有在查询字符串中编码的参数 URL 的 GET 请求,例如:

    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
    

    This section of the requests docs 是 GET 参数:

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

    And this section 用于 POST 数据。

    最后,不要对您的用户代理撒谎。据该网站称,该 API 是开放且公开的; Python 应该没问题,你不需要隐藏你的 User-Agent。

    【讨论】:

    • 这正是我所需要的,非常感谢!而且我不知道用户代理,我认为我必须将其设置为普通浏览器。感谢您指出这一点。
    猜你喜欢
    • 1970-01-01
    • 2011-07-05
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-19
    相关资源
    最近更新 更多