【问题标题】:How do you get the response data as string using (web client) in guile?如何在 guile 中使用(Web 客户端)将响应数据作为字符串获取?
【发布时间】:2020-09-24 05:06:49
【问题描述】:

我正在尝试使用https://www.gnu.org/software/guile/manual/html_node/Web-Client.html 此处找到的文档将响应数据作为字符串获取。

文档中提到http-request:

返回两个值:从服务器读取的响应,以及 作为字符串、字节向量、#f 值或端口 ....的响应正文。

但是,我不清楚如何实际提取字符串值。我可以得到端口,但不是文档中提到的纯字符串。

(define response 
  (http-request (string-append "http://localhost:" port "/save")
                #:method 'POST 
                #:headers '((Content-Type . "application/json")) 
                #:streaming? #f
                #:decode-body? #t
                #:body (string->utf8 body)))

  (response-body-port response)

【问题讨论】:

  • 如果你有一个端口并且需要一个字符串,只需使用port->string

标签: scheme guile


【解决方案1】:

Guile (Scheme) 中的多值概念在其他编程语言中并不常见(超前:p)。

您指出有两个返回值。所以让我们得到这两个值。你可以在这里阅读更多细节:https://www.gnu.org/software/guile/manual/guile.html#Multiple-Values

同时,这是我使用 Guile 参考示例测试过的内容:

(use-modules (web client))
(use-modules (ice-9 receive))

(receive (response-status response-body)
    (http-request "http://www.gnu.org")
  (display response-body))

我给receive 提供了两个“正式参数”来绑定http-request 的两个返回值。但我只使用第二个,即response-body(作为要显示的字符串),因为它是您要查找的那个。

希望对你有帮助!

P.S:Guile 黑客在 Guile mailing list 上比在 StackOverflow 上更活跃。我在看,但我不是你最好的资产哈哈。

黑客愉快!

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-05
    • 2020-03-19
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多