问题标签 [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.
haskell - http-conduit、snap 和惰性 IO
我有两个使用 snap 框架的 json api 的 http-servers
我的第一个原型包含一个类似于这个示例处理程序的处理程序
如果我发出 ajax 请求,则会发送和接收响应 - 当服务器resp: testdata
在控制台上写入时我会看到这一点,但发送到浏览器的响应writeLBS
却不是。现在,如果我将最后一行更改为
一切都像魅力一样。我想我遇到了惰性 IO 的陷阱之一,但我不知道如何解决这个问题。
我还尝试了一些没有单liftIO
块但放在liftIO
必要的地方的变体。
编辑
根据@MichaelSnoyman 的评论,我做了一些研究writeLBS
并试图
正如我认为的那样,缓冲可能是问题 - 不,不是
此外,我试图明确地写一个setResponseBody
这也表明没有成功。
http - Haskell 使用来自 POST REQUEST 的数据
我想通过POST 请求(文本框中的 ip)获取geocodeip.com的正文。
这是我的代码:
到目前为止,如果我“完成”他的功能L.putStr $ responseBody res
......但我怎样才能tags
摆脱它呢?
编译错误:
如何解决这种类型错误?
haskell - 在 Haskell 中使用 http-conduit 向 Google 表格 API 发布请求
我正在尝试使用 http-conduit 创建对电子表格 API 的发布请求。不幸的是,发布请求不起作用,谷歌表格服务器没有提供任何反馈,说明我在请求中做错了什么。
我正在使用https://developers.google.com/google-apps/spreadsheets/创建一个 POST 请求以向我的电子表格添加新行。
我写的代码是:
现在当我用正确的 url 和字符串数据调用 post
我得到以下回复:
但是 OAuth-Playground 给了我:
有人可以让我知道出了什么问题吗?提前致谢。
haskell - 通过 haskell 管道传输 http 流
我正在尝试创建一个管道,该管道将通过管道源从 HTTP 流式传输数据。这是我到目前为止所拥有的:
但我越来越
怎么会MonadReader
是预期的?这对我来说没有任何意义。
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)。
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:
haskell - 当长度已知时从 Lazy ByteString 构造 RequestBodyStream
我正在尝试调整此AWS S3 上传代码以处理Lazy ByteString
已知长度的位置(这样就不会被迫在内存中完整读取它 - 它通过预先发送长度的网络来传输)。看来我必须定义一个GivesPopper
函数Lazy ByteString
才能将其转换为RequestBodyStream
. 由于GivesPopper
定义了复杂的方式,我不确定如何为Lazy ByteString
. 将欣赏有关如何编写它的指针。这是从文件中读取的编写方式:
streamer
GivesPopper ()
如果我理解正确,上面的代码是类型。给定一个Lazy ByteString
已知长度的,在它上面写函数len
的好方法是什么?GivesPopper
我们可以一次读取一个块。
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 秒内被释放。
如果有人对这里发生的事情有任何见解,那将非常有帮助。我有一个强制执行正确流长度的解决方法。但是,我想了解发生了什么,这样我就可以避免在生产中遇到这种情况。
haskell - 理解haskell中的错误
我(Haskell 新手)正在尝试对从网页收到的 ByteString 执行解包操作。基本上我想从网页中搜索几个单词,所以我试图标记流,然后从单词中搜索单词。
但我得到以下错误
从hackage我可以看到它的签名是
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...请建议。