如何使用 Grapevine 4.0 在 RestRequest 和 RestResponse 中传递二进制有效负载?

Posted

技术标签:

【中文标题】如何使用 Grapevine 4.0 在 RestRequest 和 RestResponse 中传递二进制有效负载?【英文标题】:How do I pass binary payloads in RestRequest and RestResponse with Grapevine 4.0? 【发布时间】:2019-11-27 14:02:51 【问题描述】:

我正在尝试弄清楚如何使用 Grapevine 传递二进制数据。我找到了这个链接:https://github.com/sukona/Grapevine/issues/208,但没有看到任何后续代码。我还没有找到任何其他指示如何做到这一点。

【问题讨论】:

请求/响应是http,二进制数据必须转换为Base 64 String。 【参考方案1】:

请求上的Payload 属性是一个助手,它将底层HttpListenerRequestInputStream 属性读入字符串进行解析。只要之前的路由没有读取过这个流(它是一个只读流),你就可以访问这个流并直接读取它。

public static void GetBinaryData(HttpContext context)

    if (context.Request is HttpRequest request)
    
        var input = request.Advanced.InputStream;
        // Do what you want to get your data out of the stream
    

从那里,您可以读取流并根据需要进行转换。

【讨论】:

以上是关于如何使用 Grapevine 4.0 在 RestRequest 和 RestResponse 中传递二进制有效负载?的主要内容,如果未能解决你的问题,请参考以下文章

将 REST 请求从 HTML 按钮发布到 Grapevine

通过网络访问 Grapevine REST 服务器

Grapevine 示例 REST 服务器代码返回“未找到”响应

无法使用 useHTTPS 访问 Grapevine rest 服务器

Grapevine REST 服务器,我无法通过 IP 或主机名从其他 PC 访问

具有动态值的 Grapevine Rest 服务器路由路径信息