Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP请求转换为Python_Python_Php_Python Requests - Fatal编程技术网

将PHP请求转换为Python

将PHP请求转换为Python,python,php,python-requests,Python,Php,Python Requests,我有这个PHP代码 $url = 'http://11.111.11/index.php/Api/xxx/'; $data_post = http_build_query( array( 'key1' => 'KEY' ,'company1' => 'company'

我有这个PHP代码

$url = 'http://11.111.11/index.php/Api/xxx/';
$data_post = http_build_query(
                            array(
                                'key1' => 'KEY'
                                ,'company1' => 'company'
                                ,'period1' => 'period1'
                            )
                        );

    $options = array(
            'http' => array(
                    'header'  => "Content-type: application/x-www-form-urlencoded",
                    'method'  => 'POST',
                    'content' => $data_post,
            ),
    );
$result = json_decode(file_get_contents( $url, false, stream_context_create( $options ) ));
但是我不懂PHP,我需要在Python中使用它。我尝试了几种方法,得到了一个响应[200],但我认为我传递的参数是错误的,因为我只在json中发现了一个错误。 这是我尝试过的请求:

import requests

url = 'http://11.111.11/index.php/Api/xxx/'
data = data = {'key1':'KEY'
                'company1': 'company',
                'period1': 'period1',
                 'header': "Content-type: application/x-www-form-urlencoded"}
r = requests.post(url, headers = data)
这就是我用urllib尝试的结果,我得到了一个响应[500]

from urllib.parse import urlencode
from urllib.request import urlopen

data = urlencode({'key1':'KEY'
            'company1': 'company',
            'period1': 'period1',
             'header': "Content-type: application/x-www-form-urlencoded",
             'method': 'POST'}).encode("utf-8")

req = urllib.request.Request(url)
r = urlopen(req, data)
解决方案:
这可能会解决您的问题:

import requests
import json

api_url = 'http://11.111.11/index.php/Api/xxx/'
payload = {'key1':'KEY',
            'company1': 'company',
            'period1': 'period1',
             'header': "Content-type: application/x-www-form-urlencoded",
             'method': 'POST'}

headers = {'content-type': 'application/x-www-form-urlencoded'}

# Method 1
r = requests.post(url=api_url, data=payload, headers=headers)

# Method 2
r = requests.post(url=api_url, data=json.dumps(payload), headers=headers)

你能补充一些解释吗,这可能会帮助OP和未来的访问者更好地理解你的解决方案。当然,我会的。目前,他正忙于一些事情。此外,我还在等待作者的回应,看看这是否有效。否则,我将不得不更新代码。谢谢,但第一个解决方案给出了状态代码500,第二个解决方案给出了json中的错误(与我之前遇到的问题相同)状态代码500通常与您的脚本无关,“500内部服务器错误是”服务器端错误“错误,这意味着问题不在于您的电脑或Internet连接,而在于网站服务器的问题。”。“请联系API供应商,可能缺少他们所需的某些参数,或者他们的终端出现问题。谷歌排名500。如果API主机接受Json转储方法作为有效输入,则Json转储方法可以工作