【问题标题】:Calling Orthanc's REST Api from Lua returns a "URI Badly Formatted" error从 Lua 调用 Orthanc 的 REST Api 返回“URI 格式错误”错误
【发布时间】:2019-08-04 16:59:00
【问题描述】:

我正在尝试在将图像发送到另一个 Orthanc 服务器之前对其进行匿名化。 根据关于匿名化的文档,Orthanc 可以通过 REST api 匿名化图像: http://book.orthanc-server.com/users/anonymization.html

Orthanc 允许匿名化单个 DICOM 实例并下载 生成的匿名 DICOM 文件。示例:

$curl http://localhost:8042/instances/6e67da51-d119d6ae-c5667437-87b9a8a5-0f07c49f/anonymize -X POST -d '{}' > Anonymized.dcm

根据 Lua 脚本的文档页面,Lua 脚本可以利用 REST API:

Lua 脚本可以完全访问 Orthanc 的 REST API

该页面继续描述如何使用从 Lua 调用 REST API:

功能:

    RestApiGet(uri, builtin)
    RestApiPost(uri, body, builtin)
    RestApiPut(uri, body, builtin)
    RestApiDelete(uri, builtin)

uri 参数指定发出请求的 URI,body 是一个包含 POST/PUT 请求正文的字符串。

这意味着我应该能够通过结合上述函数从 Lua 调用 REST API。

但是,当按照文档中的描述调用 RestApiPost 时。

instances = RestApiGet(http://localhost:8042/instances, true)

我收到以下错误

E0313 17:40:40.851840 LuaScripting.cpp:358] Lua: Badly formatted URI
E0313 17:40:40.851884 LuaScripting.cpp:361] Lua: Error in RestApiPost() for URI: http://localhost:8042/instances/b38a8ef0-909f8ac0-7eca907a-75c98187-8e5339f4/anonymize

值得注意的是,我可以从 curl 和我的浏览器中正确调用此端点。删除“http://”部分并没有解决问题。

【问题讨论】:

    标签: rest http lua


    【解决方案1】:

    RestApiGet 函数及其家族希望开发者将不带“http://localhost:8042”的 uri 参数格式化如下:

    '/instances'
    

    这些函数仅适用于使用运行 Lua 脚本的 Orthanc 提供的 REST API,因此它已经知道您将使用 localhost,它会自动使用正确的 http 方案和 8042 端口。

    http://book.orthanc-server.com/users/lua.html#general-purpose-functions 中所述,函数 HttpGet(url, headers) 及其家族是该函数的一般形式,允许开发者查询任何 http 端点。

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 2019-10-21
      • 2014-03-10
      • 2020-02-19
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多