2

私は現在、Pythonプログラミングが初めてです。私の問題は、Python プログラムが、作成した ASP ファイルにパラメーターを適切に渡したりエンコードしたりしていないように見えることです。これは私のサンプルコードです:

import urllib.request

url = 'http://www.sample.com/myASP.asp'
full_url = url + "?data='" + str(sentData).replace("'", '"').replace(" ", "%20").replace('"', "%22") + "'"
print (full_url)
response = urllib.request.urlopen(full_url)
print(response)

出力は次のようになります。

http://www.sample.com/myASP.asp?data='{%22mykey%22:%20[{%22idno%22:%20%22id123%22,%20%22name%22:%20%22ej%22}]}'

aspファイルは、取得したクエリ文字列をデータベースに挿入することになっています..しかし、データベースをチェックするたびに、レコードが保存されません。印刷された出力をコピーしてブラウザの URL に貼り付けると、レコードは保存されます。これについて何か意見はありますか?ティア

更新: Python が ASP ファイル A を呼び出しても、ASP ファイル B を呼び出さない可能性はありますか? ASP ファイル A は Python によって呼び出され、ASP ファイル B は ASP ファイル A によって呼び出されます。ブラウザーで URL を実行するたびに、保存がうまくいくためです。しかし、Python では、Python から渡されたデータが ASP ファイル A によって読み取られても、データベースの保存は行われません。

4

3 に答える 3

3

Firefox で firebug を使用し、ページが読み込まれるときのネットワーク トラフィックを監視します。それが実際に HTTP POST であると思われる場合は、その投稿の投稿パラメーターを確認し、次のようにします。

from BeautifulSoup import BeautifulSoup
import urllib

post_params = {
              'param1' : 'val1',
              'param2' : 'val2',
              'param3' : 'val3'
              }
post_args = urllib.urlencode(post_params)

url = 'http://www.sample.com/myASP.asp'
fp = urllib.urlopen(url, post_args)
soup = BeautifulSoup(fp)

実際に HTTP POST である場合、これは機能します。

于 2012-11-08T14:46:43.940 に答える
1

誰かがこれに出くわした場合に備えて、これが私が思いついたものです:

py ファイル:

url = "my.url.com"
data = {'sample': 'data'}

encodeddata = urllib.parse.urlencode(data).encode('UTF-8')
req = urllib.request.Request(url, encodeddata)
response = urllib.request.urlopen(req)

私のaspファイルでは、json2.jsを使用しました:

jsondata = request.form("data")
jsondata = replace(jsondata,"'","""")
SET jsondata = JSON.parse(jsontimecard)

注:代わりにリクエストを使用してください。;)

于 2016-08-23T08:23:25.597 に答える
-1

まず、私はPythonを知りません。

しかし、これから:urllib.requestのドキュメント

data パラメータが指定されている場合、HTTP リクエストは GET ではなく POST になります。

あなたはaspページのようにフォームの値にアクセスしているRequest.Querystring(..)ので、投稿は値を渡しません。しかし、アドレスバーにURLを貼り付けると、それはGET機能します。

推測ですが、さらに確認するために .asp ページを表示できます。

于 2012-11-08T14:36:54.583 に答える