如何在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)

如何将 JSON 传递给 REST API (IBKR)

如何在 Spring Boot Rest 调用中传递 Date 类型的值?

如何将两个不同的对象传递给邮递员中的 POST 请求以测试 RESTful API?

使用 urllib2 进行 POST 调用而不是 GET

如何在 Body 中传递查询数据以在 graphql 中进行 REST API 调用