Scheme 如何在guile中使用(web客户端)以字符串形式获取响应数据?

Scheme 如何在guile中使用(web客户端)以字符串形式获取响应数据?,scheme,guile,Scheme,Guile,我正在尝试使用这里找到的文档以字符串形式获取响应数据 该文档提到http请求: 返回两个值:从服务器读取的响应,以及作为字符串、字节向量、f值或端口的响应体 但是,我不清楚如何实际提取字符串值。我可以得到端口,但不是文档中提到的普通字符串 (define response (http-request (string-append "http://localhost:" port "/save") #:method 'POST

我正在尝试使用这里找到的文档以字符串形式获取响应数据

该文档提到http请求:

返回两个值:从服务器读取的响应,以及作为字符串、字节向量、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)

Guile(Scheme)中的多值概念在其他编程语言中并不常见(领先于时代:p)

您指出有两个返回值。让我们得到这两个值。您可以在此处阅读更多详细信息:

同时,以下是我使用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
两个“形式参数”以绑定到
httprequest
的两个返回值。但是我只使用第二个,也就是
响应主体
(作为要显示的字符串),因为它是您要查找的对象

希望有帮助

附言:狡猾的黑客在网络上比在StackOverflow上更活跃。我在看,但我不是你最好的资产哈哈


快乐的黑客

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