Python 向webservice的XMLAPI发送数据

Python 向webservice的XMLAPI发送数据,python,web-services,api,Python,Web Services,Api,我正在尝试编写一个python脚本,它基本上与使用XMLAPI的Web服务交互。请求方法是POST 通常我会以请求(url、数据、标题)的形式编写一个请求——但是,在xml api的情况下,它不起作用。另外,data.encode('utf-8')或urllib.urlencode(数据)之类的东西也不起作用,因为数据不是dict 在本例中,数据是xml,那么我应该如何发送它呢 [编辑] 当我发送一个XML字符串时,我得到一个urllib2.HTTPError:HTTP Error 415:Un

我正在尝试编写一个python脚本,它基本上与使用XMLAPI的Web服务交互。请求方法是POST

通常我会以
请求(url、数据、标题)
的形式编写一个请求——但是,在xml api的情况下,它不起作用。另外,data.encode('utf-8')或urllib.urlencode(数据)之类的东西也不起作用,因为数据不是dict

在本例中,数据是xml,那么我应该如何发送它呢

[编辑]
当我发送一个XML字符串时,我得到一个
urllib2.HTTPError:HTTP Error 415:Unsupported Media Type
异常。我还有别的方法发送数据吗


另外,我正在使用的API是Google Contacts API。我正在尝试编写一个脚本,将联系人添加到我的gmail帐户。

您可能需要设置适当的内容类型标题,对于XML,它可能是:

application/xml
所以像这样的事情应该会让你开始:

request = urllib2.Request( 'xml_api.example.com' )
request.add_header('Content-Type', 'application/xml')
response = urllib2.urlopen(request, xml_data_string)

希望有帮助:)

发送XML字符串与发送urlencoded
dict
有何不同?这可能与此相关-当我发送XML字符串时,会出现“urllib2.HTTPError:HTTP Error 415:不支持的媒体类型”异常。还有其他发送数据的方法吗?提交XML数据时使用的内容类型头是什么?