我试图访问带空格的网址:
url_string = "http://api.company.com/SendMessageXml.ashx?SendXML=<company><User><Username>username</Username><Password>passweord</Password></User><Content Type=sms>.."
with urllib.request.urlopen(url_string) as url:
s = url.read()
问题在于&#34;内容类型&#34;中隔离 字符串到两个不同的块。
如何发送此请求?
答案 0 :(得分:2)
import urllib.parse
query = urllib.parse.urlencode({
"SendXML":
"<company><User><Username>username</Username><Password>passweord</Password></User><Content Type=sms>.."
})
urllib.request.urlopen(query)
答案 1 :(得分:2)
因为其他答案是使用python 2.x或urllib并且问题被标记为urllib3
,所以这是一个在python 3.x上使用urllib3
的版本。
request
将为您编码网址。如果由于某种原因需要手动执行此操作,可以在urllib3.request.urlencode
中找到它。
>>> params = {'SendXML': '<company><User><Username>username</Username><Password>passweord</Password></User><Content Type=sms>'}
>>> url = "http://api.company.com/SendMessageXml.ashx"
>>> http = urllib3.PoolManager()
>>> r = http.request('GET', url, params)
答案 2 :(得分:2)
谢谢你们,
我发现了另一个(疯狂但有效)的解决方案:
url_string.replace (" ","%20")
答案 3 :(得分:1)
import urllib.parse, urllib.request
params = { "SendXML": "<company><User><Username>username</Username><Password>passweord</Password></User><Content Type=sms>.." }
url_string = "http://api.company.com/SendMessageXml.ashx?%s" % (urllib.parse.urlencode(params))
s = ""
with urllib.request.urlopen(url_string) as url:
s = url.read()
print s