问题标签 [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 投票
2 回答
1488 浏览

haskell - 如何捕获 Http.Conduit 的 simpleHttp 抛出的 404 状态异常

我正在尝试下载包含在 html 文件中的所有 png 文件。不过,我无法捕获 404 状态异常,而是我的程序崩溃了。

这是一些示例来演示:

我的“哎呀”消息永远不会打印,而是应用程序崩溃:

StatusCodeException (Status {statusCode = 404, statusMessage = "Not Found"}) [("Content-Type","text/html; charset=UTF-8"),("X-Content-Type-Options","nosniff "),("Date","Fri, 27 Jan 2012 03:10:34 GMT"),("Server","sffe"),("Content-Length","964"),("X-XSS -保护","1;模式=块")]

我究竟做错了什么?

更新:

按照 Thoma 的建议,我将代码更改为以下代码段,现在可以进行适当的异常处理。

0 投票
1 回答
285 浏览

haskell - 从 Network.HTTP.Enumerator 迁移到 Network.HTTP.Conduit

我不知道为什么我的代码会中断。起初我以为是因为parseURL[]. requestHeaders好的,所以也许我只需要告诉它 resquestHeaders 应该是什么。好吧,我检查了requestHeaders从我的旧的工作代码生成的。它也返回一个[]. 所以现在我没有想法了。下面是旧的工作代码,遵循我在 GHCi 中尝试使用的新的基于管道的库的东西。

以上工作正常,这是我在迁移时一直在尝试做的事情,以及我收到的错误。

如您所见,它几乎是完全相同的代码。因此,我想就发生的变化以及我应该更仔细地研究的内容提供反馈。另外,如何检查在客户端代码和服务器之间来回发送的 http 标头?

0 投票
1 回答
717 浏览

haskell - 将 http-conduit 连接到 xml-conduit

我正在努力通过 xml-conduit 将响应从 http-conduit 转换为 XML 文档。

doPost函数接受一个 XML 文档并将其发布到服务器。服务器使用 XML 文档进行响应。

以下工作并返回“200”:

但是,当我尝试使用 xml-conduit 解析响应正文时,我遇到了问题:

产生的编译错误是:

我尝试使用 $= 和 $$ 将源从 http-conduit 连接到 xml-conduit,但没有任何成功。

有没有人有任何提示可以指出我正确的方向?提前致谢。

尼尔

0 投票
1 回答
834 浏览

haskell - http-conduit 浏览器使用

我正在尝试使用 HTTPS 从站点中抓取数据。我成功地使用 Network.HTTP.Conduit 发出基本请求(发布凭据等),但未能从响应标头(Set-Cookie)中提取 cookie 信息。看起来 http-conduit 有自己的处理 cookie的机制,我无法理解。

Network.HTTP.Conduit.Browser 似乎可以自动处理 cookie(这对我来说很好),但由于缺少文档,我无法让它工作。

有更多处理 http-conduit 浏览器模块经验的人可以告诉我如何:

  1. 处理自签名证书(我设法在基本模块中使用managerCheckCerts做到了这一点)
  2. 在正文中发送带有 URL 编码参数的 POST 请求,而不遵循任何重定向(我为此使用了基本模块中的urlEncodedBody )
  3. 在简单的 GET 请求中使用 2. 步骤中的 cookie,并将响应读取为(惰性)ByteString(我会为此使用httpLbs

在我看来,与 Network.HTTP.Conduit 相比,Network.HTTP.Conduit.Browser 的抽象级别更适合我的应用程序,因此即使我可以使用后者手动处理 cookie,我也想进行切换。

0 投票
1 回答
1232 浏览

http - 如何构造 Network.HTTP.Conduit.Request 对象?

试图构建一个Request带有Network.HTTP.Conduit的包。指令是:

此数据类型的构造函数未公开。相反,您应该使用def方法检索默认实例,或使用 parseUrl 从 URL 构造,然后使用下面的记录进行修改...

我不知道这是什么意思。如何对不可变的 Request 对象进行“修改”;此外,“下面”的所有函数都没有返回对象Request

据我所知:

虽然我不确定我为什么在String上面使用。

任何帮助表示赞赏。

0 投票
1 回答
377 浏览

haskell - 从 haskeline 中调用网络 IO

我有一个现有的程序,它接受命令行参数(用户名、密码、日期),然后使用该Network.HTTP.Conduit库将 xml 消息发布到服务器。然后我解析结果,做一些工作并使用 blaze-html 写入文件。

这一切都像魅力一样。但是,我想我会使用haskeline这样密码不可见。我可以创建一个命令行程序来获取用户提供的值并将它们打印出来,但是如果我调用使用管道的函数,它永远不会返回。

这是有问题的代码:

函数 getWMClients 函数是:

当我运行程序时,它会挂在“查询 WM ...”处,我认为 http-conduit 从未真正运行过。关于如何使这项工作的任何提示?

提前致谢, 尼尔

0 投票
1 回答
203 浏览

haskell - 将 Haskell 的 WAI 请求转换为 Network.HTTP.Conduit 请求

我正在编写一个服务器,我需要沿着某个请求消息转发。该消息基本上是 POST(或 GET)消息,可能包含几兆字节的文件。此消息被转发到实际存储(或检索)文件的另一台服务器。

我正在使用 Yesod 框架。因此,使用getWaiRequest,我可以获得 WAI 请求。但是要发起一条新消息传递,我需要使用 Network.HTTP.Conduit 来解决它的惰性。所以我需要Request m在那个模块中做一个。但我不知道如何进行这种转换。WAIRequest只是一种数据类型,但 Conduit 是一种Request m类型,所以我不断收到错误消息,试图将内容复制过来。

有人能告诉我我是怎么做到的吗?如果没有,我如何在不使用 HTTP Conduit 的情况下将 WAI 请求传递给另一台服务器也一样好。

谢谢!

0 投票
2 回答
6049 浏览

http - Haskell 找不到模块“Network.HTTP.Conduit”

我无法让这个导入在haskell中工作。

当我尝试编译时,出现以下错误:

如果我尝试在 GHCI 中加载文件,也会发生同样的错误。

我已经通过 cabal 安装了最新版本的 http-conduit。这是 cabal 的输出:

如果它可能有所作为,我使用的是 Ubuntu 12.04。

任何想法为什么这不会导入?

编辑:'ghc-pkg list'的输出:

从'ghc-pkg check':

运行“ghc-pkg unregister derived-2.5.11”和“ghc-pkg unregister peakachu-0.3.0”后,来自“ghc-pkg list http-conduit”的警告不再出现,但问题并未解决。

从'ghc-pkg check'的标准错误:

使用“-package http-conduit”编译时的输出:

看来我确实列出了所有依赖项。这是'cabal list'的输出

这是 'ghc-pkg list xxxx' 的输出,其中 xxxx 是依赖项列表中的每个包,这些包是使用 '-package http-conduit' 标志编译产生的:

0 投票
1 回答
770 浏览

haskell - 如何使用 Network-HTTP-Conduit applyBasicAuth

我想使用基本身份验证Network.HTTP.Conduit,但无法使其工作。

从文档...

将基本身份验证标头(具有指定的用户名和密码)添加到给定的请求。忽略错误处理:

applyBasicAuth 用户通过 $ fromJust $ parseUrl url

但是当我尝试在一个简单的“Hello World”示例中实现它时:

编译失败:不在范围内:fromJust

0 投票
1 回答
1023 浏览

windows - Windows 8 上的“InternalIOException getAddrInfo:不存在(错误 10093)”

为什么这么简单的代码不起作用?

它会导致以下错误:

TestConduit.exe:InternalIOException getAddrInfo:不存在(错误 10093)