进行如下调查:
http://localhost:8086/service/records/bulkimport?overwrite=true&classroom=grade1&dir=C:\用户\ TEMP \ classroomRecords \ grade1
尝试使用urllib在python3.6中实现如下:
from urllib.request import urlopen, URLError, Request
from urllib.parse import urlencode
loadRecordsRestCall = 'http://localhost:8086/service/records/bulkimport'
values = {'overwrite' : 'true',
'classroom' : 'grade1',
'dir' : 'C:\\Users\\temp\\classroomRecords\\grade1'}
data = urlencode(values)
data = data.encode('ascii')
req = Request(self.loadRecordsRestCall, data)
with urlopen(req) as loadRecordsRestCall:
print("Status: %s" % loadRecordsResponse.getcode())
print("Response: %s" % loadRecordsResponse.read())
但每次显示错误代码500,在网上做过研究,不想用户外部库,如果只是使用urllib,如何让它工作。
以下是错误消息,有人知道这里有什么问题:
Traceback(最近一次调用最后一次):
文件"",第1行,in
文件" C:\ Program Files \ Python36 \ lib \ urllib \ request.py",第223行,在urlopen中
return opener.open(url,data,timeout)
文件" C:\ Program Files \ Python36 \ lib \ urllib \ request.py",第532行,打开
response = meth(req,response)
文件" C:\ Program Files \ Python36 \ lib \ urllib \ request.py",第642行,中
HTTP_RESPONSE
' http',请求,响应,代码,消息,hdrs)
文件" C:\ Program Files \ Python36 \ lib \ urllib \ request.py",第570行,出错
return self._call_chain(* args)
文件" C:\ Program Files \ Python36 \ lib \ urllib \ request.py",第504行,在_中
call_chain
result = func(* args)
文件" C:\ Program Files \ Python36 \ lib \ urllib \ request.py",第650行,in
http_error_default
引发HTTPError(req.full_url,code,msg,hdrs,fp)
urllib.error.HTTPError:HTTP错误500:请求失败。
答案 0 :(得分:0)
这已得到解决,结果证明服务端API需要查询参数。所以我使用了格式化的url字符串来进行调用。