如何在urllib rest post调用中传递文件夹路径
Posted
技术标签:
【中文标题】如何在urllib rest post调用中传递文件夹路径【英文标题】:how to pass in folder path in urllib rest post call 【发布时间】:2018-10-25 16:34:16 【问题描述】:有如下电话:
http://localhost:8086/service/records/bulkimport?overwrite=true&clas-s-room=grade1&dir=C:\Users\temp\clas-s-roomRecords\grade1
尝试在python3.6中使用urllib实现如下:
from urllib.request import urlopen, URLError, Request
from urllib.parse import urlencode
loadRecordsRestCall = 'http://localhost:8086/service/records/bulkimport'
values = 'overwrite' : 'true',
'clas-s-room' : 'grade1',
'dir' : 'C:\\Users\\temp\\clas-s-roomRecords\\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,如何使它工作。
以下是错误信息,有谁知道这里出了什么问题: 回溯(最近一次通话最后): 文件“”,第 1 行,在 文件“C:\Program Files\Python36\lib\urllib\request.py”,第 223 行,在 urlopen 返回 opener.open(url, 数据, 超时) 文件“C:\Program Files\Python36\lib\urllib\request.py”,第 532 行,打开 响应=方法(请求,响应) 文件“C:\Program Files\Python36\lib\urllib\request.py”,第 642 行,在 http_response 'http', 请求, 响应, 代码, msg, hdrs) 文件“C:\Program Files\Python36\lib\urllib\request.py”,第 570 行,错误 返回 self._call_chain(*args) 文件“C:\Program Files\Python36\lib\urllib\request.py”,第 504 行,在 _ 调用链 结果 = 函数(*args) 文件“C:\Program Files\Python36\lib\urllib\request.py”,第 650 行,在 http_error_default 引发 HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP 错误 500: 请求失败。
【问题讨论】:
你看过错误日志了吗? 是的,我检查了错误日志,也粘贴在原帖中,但仍然无法弄清楚这里有什么问题,你能建议在这里检查一下吗 这只是客户端代码的回溯。服务器的错误日志在哪里? 谢谢,我现在正在检查,有一些空点错误,我不明白的部分是我尝试了在 Fiddler 中设置的所有三个参数的完整 url 调用,它可以工作,但是在python代码,不工作,表示它不是服务或api prolbrom,必须在python urllib rest调用中,而不是使rest调用正确。 服务中的错误似乎是文件夹路径没有正确传入,您知道这里应该如何传入文件夹路径 【参考方案1】:这已解决,结果表明服务端 API 需要查询参数。所以我使用格式化的 url 字符串来拨打电话。
【讨论】:
以上是关于如何在urllib rest post调用中传递文件夹路径的主要内容,如果未能解决你的问题,请参考以下文章
使用 REST API 查询 Sharepoint Online 并在正文中传递查询 (POST)
如何在 Spring Boot Rest 调用中传递 Date 类型的值?