我目前刚接触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文件A由python调用,而ASP文件B由ASP文件A调用。因为每当我在浏览器上运行url时,保存都很顺利。但是在python中,即使从Python文件A读取从python传递的数据,也不会保存数据库。
答案 0 :(得分: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,这将有效。
答案 1 :(得分: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)
注意:请改用requests。 ;)
答案 2 :(得分:0)
首先,我不懂Python。
但是从这个:doc on urllib.request
数据时,HTTP请求将是POST而不是GET 参数提供
让我做一个非常疯狂的猜测,你在asp页面中访问表单值Request.Querystring(..)
,所以你的帖子不会传递任何值。但是当您将网址粘贴到地址栏中时,它是GET
并且可以正常工作。
猜猜,你可以显示.asp页面进行进一步检查。