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 上,记录会被保存。对此有任何意见吗?TIA

更新:python 是否有可能调用我的 ASP 文件 A 但它不调用我的 ASP 文件 B?ASP File A 由 python 调用,而 ASP File B 由 ASP File A 调用。因为每当我在浏览器上运行 url 时,保存都很好。但是在 python 中,即使从 python 传递的数据被 ASP File 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 上的文档

提供数据参数时,HTTP 请求将是 POST 而不是 GET

让我做一个非常疯狂的猜测,您正在访问Request.Querystring(..)asp 页面中的表单值,因此您的帖子不会传递任何值。但是,当您将 url 粘贴到地址栏中时,它是 aGET并且可以正常工作。

只是猜测,您可以显示 .asp 页面以进行进一步检查。

于 2012-11-08T14:36:54.583 回答