python unhashable 类型 - 发布 xml 数据

标签 python typeerror httplib

首先,我不是Python程序员。我是一个老 C 狗,已经学习了新的 Java 和 PHP 技巧,但 python 看起来是一种非常酷的语言。

我收到一个无法完全理解的错误。错误如下代码所示。

import httplib, urllib
url = "pdb-services-beta.nipr.com"
xml = '<?xml version="1.0"?><!DOCTYPE SCB_Request SYSTEM "http://www.nipr.com/html/SCB_XML_Request.dtd"><SCB_Request Request_Type="Create_Report"><SCB_Login_Data CustomerID="someuser" Passwd="somepass" /><SCB_Create_Report_Request Title=""><Producer_List><NIPR_Num_List_XML><NIPR_Num NIPR_Num="8980608" /><NIPR_Num NIPR_Num="7597855" /><NIPR_Num NIPR_Num="10166016" /></NIPR_Num_List_XML></Producer_List></SCB_Create_Report_Request></SCB_Request>'

params = {}
params['xmldata'] = xml

headers = {}
headers['Content-type'] = 'text/xml'
headers['Accept'] = '*/*'
headers['Content-Length'] = "%d" % len(xml)

connection = httplib.HTTPSConnection(url)
connection.set_debuglevel(1)
connection.request("POST", "/pdb-xml-reports/scb_xmlclient.cgi", params, headers)

response = connection.getresponse()
print response.status, response.reason
data = response.read()
print data
connection.close

错误如下:

Traceback (most recent call last):   
 File "C:\Python27\tutorial.py", line 14, in  connection.request("POST", "/pdb-xml-reports/scb_xmlclient.cgi", params, headers)   
 File "C:\Python27\lib\httplib.py", line 958, in request self._send_request(method, url, body, headers)   
 File "C:\Python27\lib\httplib.py", line 992, in _send_request self.endheaders(body)
 File "C:\Python27\lib\httplib.py", line 954, in endheaders self._send_output(message_body)
 File "C:\Python27\lib\httplib.py", line 818, in _send_output self.send(message_body)
 File "C:\Python27\lib\httplib.py", line 790, in send self.sock.sendall(data)
 File "C:\Python27\lib\ssl.py", line 229, in sendall v = self.send(data[count:]) 
TypeError: unhashable type

我的日志文件显示 xmldata 参数为空。

有什么想法吗?

最佳答案

我猜想 params 在传递给 .request 时必须是一个字符串,这可以解释错误,因为哈希值不可哈希

首先尝试对您的参数进行编码

params = urllib.urlencode(params)

您也可以在底部找到另一个代码示例:

http://docs.python.org/release/3.1.5/library/http.client.html

关于python unhashable 类型 - 发布 xml 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11082560/

相关文章:

python - 增加 Pandas 中数据框的列

python - 禁用所有 scons 警告

php - 如果函数同时包含 return 和 yield,为什么 php 会返回一个空的生成器?

匹配中的 OCaml 类型错误

python - 当内容类型为 "application/xml"时,如何使用 httplib 发布非 ASCII 字符

python - 如何使用python将一组图像转换为字体 `.ttf`文件?

python - 如果没有 Marionette,Geckodriver/Firefox 如何工作? (针对 FF 53 运行 python selenium 3)

javascript - react 类型错误未定义

python - 如何使用 httplib (python 2.6) 处理超时?

python - 我想调用 HDFS REST api 来上传文件