问题标签 [http-conduit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
134 浏览

haskell - http-conduit、snap 和惰性 IO

我有两个使用 snap 框架的 json api 的 http-servers

我的第一个原型包含一个类似于这个示例处理程序的处理程序

如果我发出 ajax 请求,则会发送和接收响应 - 当服务器resp: testdata在控制台上写入时我会看到这一点,但发送到浏览器的响应writeLBS却不是。现在,如果我将最后一行更改为

一切都像魅力一样。我想我遇到了惰性 IO 的陷阱之一,但我不知道如何解决这个问题。

我还尝试了一些没有单liftIO块但放在liftIO必要的地方的变体。

编辑

根据@MichaelSnoyman 的评论,我做了一些研究writeLBS并试图

正如我认为的那样,缓冲可能是问题 - 不,不是

此外,我试图明确地写一个setResponseBody

这也表明没有成功。

0 投票
1 回答
188 浏览

http - Haskell 使用来自 POST REQUEST 的数据

我想通过POST 请求(文本框中的 ip)获取geocodeip.com的正文。

这是我的代码:

到目前为止,如果我“完成”他的功能L.putStr $ responseBody res......但我怎样才能tags摆脱它呢?

编译错误:

如何解决这种类型错误?

0 投票
1 回答
428 浏览

haskell - 在 Haskell 中使用 http-conduit 向 Google 表格 API 发布请求

我正在尝试使用 http-conduit 创建对电子表格 API 的发布请求。不幸的是,发布请求不起作用,谷歌表格服务器没有提供任何反馈,说明我在请求中做错了什么。

我正在使用https://developers.google.com/google-apps/spreadsheets/创建一个 POST 请求以向我的电子表格添加新行。

我写的代码是:

现在当我用正确的 url 和字符串数据调用 post

我得到以下回复:

但是 OAuth-Playground 给了我:

有人可以让我知道出了什么问题吗?提前致谢。

0 投票
1 回答
374 浏览

haskell - 通过 haskell 管道传输 http 流

我正在尝试创建一个管道,该管道将通过管道源从 HTTP 流式传输数据。这是我到目前为止所拥有的:

但我越来越

怎么会MonadReader是预期的?这对我来说没有任何意义。

0 投票
1 回答
354 浏览

haskell - 在 Haskell 中获取网页的状态码

我试图找到一种方法来检查 Haskell 中是否存在网页。服务器仅是 HTTP2 / HTTPS,我正在尝试检查该页面是否存在于服务应用程序中。

是否有任何带有良好文档的 Haskell 包来检查状态码是 200 还是 404?并使用强大的 HTTPS 和 HTTP2 服务器?

这是我目前使用 http-conduit 所拥有的,但我收到了奇怪的异常(TlsExceptionHostPort (HandshakeFailed (Error_Protocol ("expecting server hello, got alert : [(AlertLevel_Fatal,HandshakeFailure)]",True,HandshakeFailure))) "thibaud.dauce .fr" 443 和 StatusCodeException)。

0 投票
1 回答
769 浏览

haskell - How do you get http-conduit to accept self-signed certificates?

I have created a program using http-conduit and it needs to talk to a server that doesn't have a valid TLS certificate. It's a self-signed certificate in this case.

https-test.hs:

Expected output

Actual output:

0 投票
1 回答
90 浏览

haskell - 当长度已知时从 Lazy ByteString 构造 RequestBodyStream

我正在尝试调整此AWS S3 上传代码以处理Lazy ByteString已知长度的位置(这样就不会被迫在内存中完整读取它 - 它通过预先发送长度的网络来传输)。看来我必须定义一个GivesPopper函数Lazy ByteString才能将其转换为RequestBodyStream. 由于GivesPopper定义了复杂的方式,我不确定如何为Lazy ByteString. 将欣赏有关如何编写它的指针。是从文件中读取的编写方式:

streamerGivesPopper ()如果我理解正确,上面的代码是类型。给定一个Lazy ByteString已知长度的,在它上面写函数len的好方法是什么?GivesPopper我们可以一次读取一个块。

0 投票
1 回答
73 浏览

haskell - HTTP 管理器在为流发送错误长度时共享状态损坏

给定一个共享的 HTTP 管理器,如果requestBody是类型requestBodySource并且为请求正文提供了错误的长度,那么后续请求将在同一个 HTTP 管理器上崩溃大约 20 秒。似乎有一些关于共享状态的交互的东西,GivesPopper也许这导致了这个问题。这是重现它的示例代码 - 我们使用 requestb.in 发送错误长度的上传,然后尝试读取 requestb.in 上的另一个有效 URL。

输出 - 第一次错误上传通过 as HTTP 200,随后的GET请求立即导致HTTP 400错误:

使用不同的 http 管理器代替GET请求将返回HTTP 200。因此,http 管理器中的共享状态似乎是这里的问题。

有没有其他人观察到它?我经历了 github 问题,HTTP Manager但还没有看到这个报告。在错误的流长度上,行为不应该是破坏 HTTP 管理器,就像这里发生的那样。

我还模拟了 requestBodySource 的源文件,其中长度正确,但由于模拟故障(模拟网络问题),源中途中止。在这种情况下,没有错误。因此,似乎我们只有一种情况,发送错误的长度而没有任何失败会导致某种共享状态在此处损坏,并在 25 秒内被释放。

如果有人对这里发生的事情有任何见解,那将非常有帮助。我有一个强制执行正确流长度的解决方法。但是,我想了解发生了什么,这样我就可以避免在生产中遇到这种情况。

0 投票
2 回答
72 浏览

haskell - 理解haskell中的错误

我(Haskell 新手)正在尝试对从网页收到的 ByteString 执行解包操作。基本上我想从网页中搜索几个单词,所以我试图标记流,然后从单词中搜索单词。

但我得到以下错误

从hackage我可以看到它的签名是

0 投票
1 回答
82 浏览

string - Haskell:simplehttp 附加“%0D”?

我正在使用 simplehttp 来查询网页。例如:让 webLink = "www.example.com/" 和 number= 257(从文件中读取数字)。

它在 Windows 上运行良好,但在 mac 上,它抛出错误 404,因为它的显示路径为“www.example.com/257%0D”我不知道这个“%0D”来自哪里,因为打印数字给了我257 . 我已经尝试过滤“%0D”,如下所示,但由于路径中的 %0D,mac 仍然显示错误 404...请建议。