1

Python 3 から単純な文字列を .txt ファイルに変換する PHP サイトに送信したいと考えています。私のコード全体は次のようになります。

パイソン:

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:

<?php

$handle = fopen("/dir/".name.".txt", "w");

$myContent = $_POST[aa];

fwrite($handle, $myContent);

fclose($handle);

?>

Python がサイトにアクセスし、ファイルが空白であることを除いて、.txt ファイルが作成されます。andに変更$_POSTしてみました。また、さまざまな場所に一重引用符と二重引用符を配置しました。私はそれを疑っており、解釈したい文字列/データの名前について通信していません。$_GET$_REQUEST'aa'PythonPHP

編集: この PHP コードは、別の Web サイトからの POST データを既に処理しています。この問題は、Python の互換性でのみ発生します

4

3 に答える 3

2

データは次のようなハッシュである必要があります。

a = {}
a["name"] = "ben";

次に、その上で urllib.urlencode を呼び出す必要があります

a = urllib.urlencode(a)

次に、次のように urlopen を呼び出します。

urllib.request.urlopen(req, a)
于 2012-09-30T23:14:16.540 に答える
1

use を使用できますfile_put_contents$_POST[aa]、有効ではありません。$_POST['aa']

$file = "/dir/".name.".txt" ;
file_put_contents($file, $_POST['aa']);

そして、 httplib2を見るべきだと思います

from httplib2 import Http
from urllib import urlencode
h = Http()
str1 = body = {'aa': 'abcdefg'}
resp, content = h.request("http://site.net/post.php", "POST", urlencode(data))
于 2012-09-30T23:15:21.903 に答える
1

送信しているデータは無効です。ドキュメントに従う:

dataは、標準の application/x-www-form-urlencoded 形式のバッファである必要があります。urllib.parse.urlencode() 関数は、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'))
于 2012-10-01T00:25:04.063 に答える