Http-Conduit 频繁连接失败

2024-01-13

我正在编写将通过 HTTP 下载一些文件的应用程序。在某种程度上,我使用以下代码片段来下载页面正文:

import network.HTTP
simpleHTTP (getRequest "http://www.haskell.org/") >>= getResponseBody

它工作正常,但无法通过 HTTPS 协议建立连接。因此,为了解决这个问题,我已切换到 HTTP-Conduit,现在我使用以下代码:

simpleHttp' :: Manager -> String -> IO (C.Response LBS.ByteString)
simpleHttp' manager url = do
     request <- parseUrl url
     runResourceT $ httpLbs request manager

它可以连接到 HTTPS,但出现了新的令人沮丧的问题。大约有五分之一的连接失败,但有异常:

getpics.hs: FailedConnectionException "i.imgur.com" 80

我确信这是 HTTP-Conduit 问题,因为 network.HTTP 在同一组页面(不包括 https 页面)上工作正常。

有没有人遇到过这样的问题并知道解决方案或更好的(而且简单,因为这是简单的任务,不应该超过几行代码)替代 Conduit 库?


一种简单的替代方法是使用curl http://hackage.haskell.org/package/curl包裹。它支持 HTTP、HTTPS 和许多其他替代协议,以及很多选择 http://hackage.haskell.org/package/curl-1.3.8/docs/Network-Curl-Opts.html#t%3aCurlOption自定义其行为。价格引入了外部依赖性libcurl http://curl.haxx.se/libcurl/,构建包所需的。

Example:

import Network.Curl

main :: IO ()
main = do
  let addr = "https://google.com/" 
  -- Explicit type annotation is required for calls to curlGetresponse_.
  -- Use ByteString instead of String for higher performance:
  r <- curlGetResponse_ addr [] :: IO (CurlResponse_ [(String,String)] String)

  print $ respHeaders r
  putStr $ respBody r

Update:我试图复制你的问题,但一切都对我有用。你能发布一个简短、独立、可编译、示例 http://sscce.org/这说明了问题所在?我的代码:

import Control.Monad
import qualified Data.Conduit as C
import qualified Data.ByteString.Lazy as LBS
import Network.HTTP.Conduit

simpleHttp'' :: String -> Manager -> C.ResourceT IO (Response LBS.ByteString)
simpleHttp'' url manager = do
     request <- parseUrl url
     httpLbs request manager

main :: IO ()
main = do
  let url = "http://i.imgur.com/"
      count = 100
  rs <- withManager $ \m -> replicateM count (simpleHttp'' url m)
  mapM_ (print . responseStatus) $ rs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Http-Conduit 频繁连接失败 的相关文章

  • Haskell:找不到模块“Data.List.Split”

    我正在尝试在 Haskell 中拆分列表 据我所知 最简单的方法是splitOn 但是这个函数需要Data List Split 所以我尝试运行import Data List Split在前奏曲中 但是 我收到以下错误 Could not
  • 如何为强制长度为 2^n 的向量类型定义可用的 Applicative 实例

    对于某些应用程序 我需要长度为 2 n 的向量 为了强制某些操作的长度匹配 我使用 ist 应用实例定义了我的类型 如下所示 LANGUAGE GADTs DataKinds FlexibleInstances FlexibleContex
  • 在我的网络上的其他计算机上查看我的 IIS 托管站点

    在家里 我有一个包含两台机器的简单网络设置 在一台机器上 我有一个使用 IIS7 托管的网站 而不是标准localhost index htm地址我已经添加了一个条目HOSTS将本地 IP 127 0 0 1 指向该域的文件 www mys
  • 如何从 haskell 中的 IOError 获取 errno?

    我在 haskell 平台上 GHC 6 12 1 作为 apt get 安装在 Debian Squeeze 上 鉴于我需要在与最初引发它的线程不同的线程上使用它 如何从 IOError 中获取底层 errno 我需要这个的原因是因为我正
  • Haskell scala 互操作性

    我是 Scala 初学者 来自面向对象范式 在了解 Scala 的函数式编程部分时 我被引导到 Haskell 纯函数式编程语言 探索 SO 问题答案 我发现 Java Haskell 具有互操作性 我很想知道 Scala Haskell
  • 在 Python 中通过网络发送对象的最佳方式是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我需要通过网络发送对象 我将使用 Twisted 并且我刚刚开始查看它的文档 据我所知 python实现套接字的唯一方式是通过文本 那么我如何使
  • 如何在 Haskell 中向右或向左移动列表的 1 个元素?

    嗨 我一直在寻找答案 但找不到 假设我们有一个像这样的列表 1 10 4 5 3 我怎样才能将 5 向左移动 使这个列表变成 1 10 5 4 3 我尝试过了swapElementsAt通过找到该元素的索引 但它看起来非常不足 swapEl
  • 搜索重写规则

    有什么办法可以浏览或搜索重写规则吗 当我使用像这样的标志时 ddump rule firings or ddump rule rewrites我只是得到了触发的规则的名称以及它引起的重写 但没有得到实际的规则本身 理想情况下 我想通过 GH
  • Haskell 中的分类结构

    Hask通常被认为是一个范畴 其对象是类型 态射是函数 然而 我看到 Conor McBride pigworker 警告不要使用Hask多次 1 https stackoverflow com a 45905082 474311 2 ht
  • Haskell 泛化问题(涉及列表理解)

    假设我想知道a上的所有要点 x y 矩形内的平面has 我可以使用列表推导式来计算 如下所示 let myFun2D x y x lt 0 2 y lt 0 2 现在 如果我想为一个人完成同样的事情 x y z 空间 我可以采取同样的方式并
  • 使用 FoldLine 解析多个块

    对于这个简化的问题 我试图解析一个如下所示的输入 foo bar baz quux woo hoo xyzzy glulx into foo bar baz quux woo hoo xyzzy glulx 我尝试过的代码如下 import
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • Haskell 中的中缀运算符优先级

    对于以下 Haskell 表达式 返回 a gt gt f 应该读作 返回a gt gt f or 返回 a gt gt f 这里的相关规则是什么 规则始终是函数应用程序的优先级高于任何运算符 因此 return a gt gt f 被解析
  • Haskell 入门

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 几天来 我一直试图理解 Haskell 中的函数式编程范例 我通过阅读教程和观看截屏视频
  • 标准的能力

    我发现了一些使用标准的旧例子here http www serpentine com blog 2009 09 29 criterion a new benchmarking library for haskell 看起来好像早在 2009
  • 如何在 Haskell 中制作打勾游戏的图案?

    实现有 2 个参数的函数 ticktick 第一个参数是自然数元组 定义游戏场地的行数和列数 第二个列表包含由玩家 x 和玩家 o 轮流玩的坐标给出的井字游戏比赛的记录 打印游戏的实际状态 其中游戏区域将由字符 和 界定 空方块 以及字符
  • Traversable 类型类的用途

    有人可以向我解释一下类型类的目的是什么吗Traversable 类型类定义是 class Functor t Foldable t gt Traversable t gt where So Traversable is a Functor
  • 简单 Haskell Monad - 随机数

    我正在尝试扩展代码这个帖子 https stackoverflow com questions 3944170 haskell and state 接受的答案 允许我能够基于以种子作为参数的函数 randomGen 调用 randomGen
  • 通过 Telnet 运行应用程序

    我需要创建一个 BAT 文件来通过 telnet 运行应用程序 但据我所知 在 DOS 上无法执行此操作 Telnet 不允许在连接的瞬间向远程计算机发送任何命令 并且 BAT 文件中的每个后续命令只有在 telnet 停止后才会执行 这段
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach

随机推荐

  • 在 JQGrid 中显示 Twitter Bootstrap 下拉菜单

    我使用自定义单元格格式化程序向每个 JQGrid 行添加了 twitter bootstrap 下拉菜单 当我单击菜单时 它不完全可见 我应该应用什么样式来在 JQGrid 行的最顶部显示下拉菜单 HTML td title Actions
  • 如何将数据从AppDelegate传递到ViewController?

    我正在使用 Safari 浏览网页 单击此页面上的按钮后 我的 iPad 将启动我的应用程序 所以我实现了该方法 BOOL application UIApplication application handleOpenURL NSURL
  • JPA 2.0 子选择/子查询按条件 api 的 order by 子句

    我想使用 JPA 2 0 criteria api 来构建带有子选择的 order by 子句 我知道你可以用普通的 SQL 来做到这一点 但是它可以用标准 api 来映射吗 有人可以给出代码示例吗 Example Order name a
  • 在 C++ 中可以锁定变量以防止对其进行更改吗?

    我正在使用一个成员变量 并且在程序的某个时刻我想更改它 但我更喜欢在其他地方 锁定它 以防止意外更改 代码解释 class myClass int x This should be prevented to being changed mo
  • 如果 JavaScript 构造函数失败,应该返回什么?

    如果我有一个无法实例化的 javascript 类 构造函数应该返回我可以测试的内容 构造函数总是返回一个对象 因此如果构造函数失败 我不能返回 null function SomeClass id if typeof id number
  • 使用 D3.js 沿连续路径进行插值

    我正在改编迈克 博斯托克的作品沿路径点插值 http bl ocks org mbostock 1705868模型接受数组n单独的路径并沿着每个路径进行插值连续地 对于 D3 来说 下面的代码相对较新 据我所知 它是为两条路径运行点插值同时
  • 在 Google App Engine 日志中查看 POST 请求的参数

    我有一个通过 Google App Engine 运行的服务器 我正在通过控制台查看服务器的请求日志 它们位于Google Cloud Platform gt Stackdriver Logging gt Logs 我想查看 POST 请求
  • 在 Python 中模拟远程主机

    我正在使用 paramiko 编写一些函数来执行命令并在远程主机上创建文件 我想为它们编写一些单元测试 但我不知道实现此目的最简单的方法是什么 这是我设想的代码大纲示例 import os import paramiko import py
  • 无法找到或加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain [重复]

    这个问题在这里已经有答案了 我正在运行 apache kafka 的教程 在 apache kafka 网站上 并且必须使用帮助教程 http janschulte wordpress com 2013 10 13 apache kafka
  • Ruby on Rails - 根据查询在数据库中搜索

    我有一个简单的表单 我在其中设置了一个我想要浏览的查询 例如松下维埃拉 这是我在数据库中搜索术语的方式 Product where name ilike params q order price 查询看起来像 松下维埃拉 但我需要这样搜索查
  • 需要适用于 Iphone、Android、Windows/XP 的兼容 AES 代码加密/解密

    我需要能够从 Windows 向各种手机发送安全信息 我在 iPhone 和 Android 开发方面都是新手 但需要为每个环境创建一个易于使用的应用程序 与收到的短信交互也很好 我想获取适用于 iPhone Android 和 Windo
  • 如何在android活动中使用gradle.properties中的属性?

    如何在android活动中使用gradle properties中的属性 每当我构建代码时 它都会抛出错误 是否有可以在活动内部访问属性的特定方式 在 gradle properties 中 SIMPLE STRING ABC 在 buil
  • 记忆斐波那契的时间复杂度

    我最近遇到了这个 Haskell 记忆斐波那契实现 fibonacci Int gt Integer fibonacci map fib 0 where fib 0 0 fib 1 1 fib n fibonacci n 1 fibonac
  • 了解从整数到浮点数的转换

    有人能解释一下 32 位机器上这个奇怪的输出吗 include
  • 直接在视图中绑定模型属性

    我在 Prism 中找到了这段文字文档 http msdn microsoft com en us library gg405484 28v pandp 40 29 aspx 我开始使用 MVVM 但我迷失了方向 我可以 应该 在视图中绑定
  • ggplot2 中的蠕虫图残差图

    I m trying to plot the Worm plot residuals on a model fitted using the gamlss function from the gamlss package The inter
  • 使用 typedcolumn 选择 Spark 数据集

    看着select Spark DataSet 上的函数有各种生成的函数签名 c1 TypedColumn MyClass U1 c2 TypedColumn MyClass U2 这似乎暗示我应该能够直接引用 MyClass 的成员并且类型
  • TypeScript 定义函数的哈希表

    我正在尝试为车把创建一个定义文件 以便与预编译的车把脚本一起使用 Handlebars 会将预编译的脚本放入字符串索引的函数哈希表中 但我无法弄清楚或找到如何定义它 假设的定义是 declare module Handlebars expo
  • 使用连接字段的结果更新文档

    考虑包含以下文档的集合 id aaaaaaaaaaaa title Hello World date Thursday November 12 2015 time 9 30 AM endtime 11 30 AM id bbbbbbbbbb
  • Http-Conduit 频繁连接失败

    我正在编写将通过 HTTP 下载一些文件的应用程序 在某种程度上 我使用以下代码片段来下载页面正文 import network HTTP simpleHTTP getRequest http www haskell org gt gt g