好吧,显然python 3在urllib方面非常荒谬。
所以,我有一个像这样格式的网址,
http_request = "http://localhost/system/index.php/index_file/store?cid={0}&cname={1}&fname={2}&fdir='{3}'"\
.format(client_id, client_name, each[1], each[2])
其中each[1]
和each[2]
分别是文件名和文件目录。
因此通过print()生成的http_request结果会给出类似的结果,
http://localhost/system/index.php/index_file/store? \
cid=90823&cname=John Smith&fname=Sample Document.doc& \
fdir='C:\Users\williamyang\Desktop\Files\90823 Michelle Moore\Sample Document.doc'
(单独反斜杠的目的就是让它更适合这里。实际代码在每一行的末尾没有单独的反斜杠。)
如果我将该URL输入浏览器,那就完全没问题了。 PHP应用程序通过$ _GET收到所有索引,然后关闭到MySQL,没有问题。
但如果我让python这样做,
PHP告诉我索引$_GET['fname']
和$_GET['fdir']
不存在!!!什么疯狂。好的,那么,
我尝试了urllib.parse,urllib编码和解码,http_request.replace('\\', '/')
等许多其他内容。
其中没有一个有用。
我曾经告诉我的教程python在字符编码方面做的很有趣。
这是我在所有疯狂和无用的urllib解析实验之前发送我的URL的方式
def getResponseCode(url):
conn = urllib.request.urlopen((url))
return conn.read()
url = http_request
我该如何解决这个问题?
PHP说$_GET['fname'] and $_GET['fdir']
不存在
但是当我将自动生成的http_request粘贴到浏览器中时,
一切都很好
答案 0 :(得分:0)
网址不应包含空格。您的浏览器将自动对网址进行百分比编码,并根据网址转义规则,将%20
或+
内不应包含在网址中的字符替换为quote_plus
或urllib.quote_plus
。 Python不会自动执行此操作;最有可能的是,便利性引入了对编程很重要的模糊性,但不会打扰普通的Web用户。用于url转义的Python工具是urllib.quote
and urllib.quote_plus
;你可能想要{{1}}。在将URL粘贴到域名之前,将URL的路径组件传递给{{1}},您应该很高兴。
答案 1 :(得分:0)
python 2的解决方案: How can I normalize a URL in python
python 3的解决方案:
Ma wonky solution>
从os.walk()读取目录后立即执行var.replace(“”,“_”)
在php端,
$ var = str_replace('_','',$ _GET ['var']);