Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.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
Can';t让Python3将POST数据传输到PHP_Php_Python_Http_Post_Urllib - Fatal编程技术网

Can';t让Python3将POST数据传输到PHP

Can';t让Python3将POST数据传输到PHP,php,python,http,post,urllib,Php,Python,Http,Post,Urllib,我想将一个简单的字符串从Python3发送到一个PHP站点,该站点将其转换为.txt文件。我的整个代码如下所示: urllib.request.urlopen(req, a) Python: import urllib.parse import urllib.request str1 = "abcdefg" url = "http://site.net/post.php" aa = str1.encode('utf-8') req = urllib.request.Request(url

我想将一个简单的字符串从Python3发送到一个PHP站点,该站点将其转换为.txt文件。我的整个代码如下所示:

urllib.request.urlopen(req, a)
Python:

import urllib.parse
import urllib.request

str1 = "abcdefg"

url = "http://site.net/post.php"

aa = str1.encode('utf-8')
req = urllib.request.Request(url, aa)
req.add_header('Content-Type', 'this/that')
urllib.request.urlopen(req, data=aa)
PHP:


Python访问该站点,并创建一个.txt文件,但该文件为空。我已经尝试将
$\u POST
更改为
$\u GET
$\u REQUEST
,并在不同的位置将
'aa'
前后加上单引号和双引号。我怀疑
Python
PHP
没有就我希望它解释的字符串/数据的名称进行通信

编辑:此PHP代码已经处理来自其他网站的帖子数据。这个问题只会在Python兼容性方面出现


您的数据需要是如下所示的散列:

a = {}
a["name"] = "ben";
然后您需要对其调用urllib.urlencode

a = urllib.urlencode(a)
然后像这样调用urlopen:

urllib.request.urlopen(req, a)

您的数据需要是如下所示的散列:

a = {}
a["name"] = "ben";
然后您需要对其调用urllib.urlencode

a = urllib.urlencode(a)
然后像这样调用urlopen:

urllib.request.urlopen(req, a)

您可以使用
文件内容
并且
$\u POST[aa]
无效,它应该是
$\u POST['aa']

$file = "/dir/".name.".txt" ;
file_put_contents($file, $_POST['aa']);
我想你应该看看


您可以使用
文件内容
并且
$\u POST[aa]
无效,它应该是
$\u POST['aa']

$file = "/dir/".name.".txt" ;
file_put_contents($file, $_POST['aa']);
我想你应该看看


您发送的数据无效。以下:

数据应为标准应用程序/x-www-form-urlencoded格式的缓冲区。函数的作用是:获取一个2元组的映射或序列,并以这种格式返回一个字符串在用作数据参数之前,应将其编码为字节

本文档还包含一个您只需遵循的步骤:

import urllib.request
import urllib.parse

data = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
data = data.encode('utf-8')
request = urllib.request.Request("http://requestb.in/xrbl82xr")

# adding charset parameter to the Content-Type header.
request.add_header("Content-Type","application/x-www-form-urlencoded;charset=utf-8")

f = urllib.request.urlopen(request, data)
print(f.read().decode('utf-8'))

您发送的数据无效。以下:

数据应为标准应用程序/x-www-form-urlencoded格式的缓冲区。函数的作用是:获取一个2元组的映射或序列,并以这种格式返回一个字符串在用作数据参数之前,应将其编码为字节

本文档还包含一个您只需遵循的步骤:

import urllib.request
import urllib.parse

data = urllib.parse.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
data = data.encode('utf-8')
request = urllib.request.Request("http://requestb.in/xrbl82xr")

# adding charset parameter to the Content-Type header.
request.add_header("Content-Type","application/x-www-form-urlencoded;charset=utf-8")

f = urllib.request.urlopen(request, data)
print(f.read().decode('utf-8'))

我应该提到,这个PHP代码已经处理了来自另一个网站的POST数据。这个问题只出现在Python兼容性上。我应该提到,这个PHP代码已经处理了来自另一个网站的POST数据。这个问题只会在Python兼容性方面出现。编写“POST”会让它认为我将其作为我的数据发送,它会出错。另外,您是说要使用urllib.**parse**.urlencode吗?这似乎编码不正确,因为我收到一个关于需要字节而不是字符串的类型错误。请参阅更新的代码忘记告诉您我使用的是
httplib2
请参阅一些详细示例编写“POST”使它认为我将其作为我的数据发送,并且它会出错。另外,您是说要使用urllib.**parse**.urlencode吗?这似乎编码不正确,因为我收到一个关于需要字节而不是字符串的TypeError。请参阅更新的代码忘记告诉您我使用的是
httplib2
请参阅一些仍然收到TypeError消息的详细示例。urlencode似乎无法将数据转换为utf8字节。到目前为止,我上面的代码:aa=str1.encode('utf-8')是唯一将其转换为适当格式的代码,PHP似乎忽略了它(但没有错误)。@tqastro:不,它不是适当的格式,因为您得到的字节序列不包含“=”,因此它不能是有效的POST数据。仍然会收到TypeError消息。urlencode似乎无法将数据转换为utf8字节。到目前为止,我上面的代码:aa=str1.encode('utf-8')是唯一将其转换为适当格式的代码,PHP似乎忽略了它(但没有错误)。@tqastro:不,它不是适当的格式,因为您得到的字节序列不包含“=”,因此它不能是有效的POST数据。我不知道我的数据需要输入{:}form.I还认为它对于data.encode和.urlencode是多余的,但是在我之后对dict对象执行后者时,我会在data.encode时工作。只执行data.encode不会注册,因为它只是一个str对象,但是没有错误,因为数据是utf8格式的。此外,我忽略了头,因为我认为这不是必需的y、 如果我想,我可以修改多少?我不知道我的数据需要在{:}form.I还认为它对于data.encode和.urlencode是多余的,但是在我之后对dict对象执行后者时,我会在data.encode时工作。只执行data.encode不会注册,因为它只是一个str对象,但是没有错误,因为数据是utf8格式的。此外,我忽略了头,因为我认为这不是必需的y、 如果我想的话,我能改多少?