Python url中的空格

Python url中的空格,python,python-3.x,urllib3,Python,Python 3.x,Urllib3,我正在尝试使用空格访问url: url_string = "http://api.company.com/SendMessageXml.ashx?SendXML=<company><User><Username>username</Username><Password>passweord</Password></User><Content Type=sms>.." with urllib.reques

我正在尝试使用空格访问url:

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()
url\u字符串=”http://api.company.com/SendMessageXml.ashx?SendXML=usernamepassweord.."
使用urllib.request.urlopen(url_字符串)作为url:
s=url.read()
问题在于“内容类型”中的空间分隔 将字符串转换为两个不同的块

如何发送此请求?

导入urllib.parse,urllib.request
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
params={“SendXML”:“usernamepassweord..”} url_字符串=”http://api.company.com/SendMessageXml.ashx?%s“%(urllib.parse.urlencode(参数)) s=“” 使用urllib.request.urlopen(url_字符串)作为url: s=url.read() 印刷品
导入urllib.parse,urllib.request
params={“SendXML”:“usernamepassweord..”}
url_字符串=”http://api.company.com/SendMessageXml.ashx?%s“%(urllib.parse.urlencode(参数))
s=“”
使用urllib.request.urlopen(url_字符串)作为url:
s=url.read()
印刷品
使用:

import urllib.parse
query=urllib.parse.urlencode({
“SendXML”:
“用户名密码”
})
urllib.request.urlopen(查询)
使用:

import urllib.parse
query=urllib.parse.urlencode({
“SendXML”:
“用户名密码”
})
urllib.request.urlopen(查询)

因为其他答案要么使用Python2.x,要么使用urllib,并且问题被标记为
urllib3
,所以这里有一个在Python3.x上使用的版本

请求将为您编码url。如果出于某种原因需要手动执行此操作,可以在中找到

>params={'SendXML':'usernamepassweord'}
>>>url=”http://api.company.com/SendMessageXml.ashx"
>>>http=urllib3.PoolManager()
>>>r=http.request('GET',url,params)

因为其他答案要么使用Python2.x,要么使用urllib,并且问题被标记为
urllib3
,所以这里有一个在Python3.x上使用的版本

请求将为您编码url。如果出于某种原因需要手动执行此操作,可以在中找到

>params={'SendXML':'usernamepassweord'}
>>>url=”http://api.company.com/SendMessageXml.ashx"
>>>http=urllib3.PoolManager()
>>>r=http.request('GET',url,params)
谢谢各位

我找到了另一个(疯狂但有效的)解决方案:

url_string.replace (" ","%20")
谢谢各位

我找到了另一个(疯狂但有效的)解决方案:

url_string.replace (" ","%20")

您是否尝试过用%20替换空间?是否尝试过用%20替换空间?如果您已经在使用urllib3,那么您应该使用它提供的功能。否则,您必须替换所有需要编码的内容,例如
。如果您已经在使用urllib3,那么您应该使用它提供的功能。否则,您将不得不替换所有需要编码的内容,例如
。它会从服务器上给我“非法XML”响应。@user1641071将
参数[“SendXML”]
更改为原始XML数据。现在它可用于此exmaple!我的错误。非常感谢。它从服务器上给我“非法XML”响应。@user1641071将
params[“SendXML”]
更改为原始XML数据。现在它可用于此exmaple!我的错误。非常感谢。
url_string.replace (" ","%20")