Исключение ErrorClosed от Network.HTTP.simpleHTTP — попытка загрузки изображений через XML -RPC с помощью haxr

Я пытаюсь использовать haxr 3000.8.5 для загрузки изображений в блог WordPress , используя API metaWeblog ---, в частности метод newMediaObject .

Я заставил его работать с небольшими изображениями, успешно загрузив значки 20x20 в форматах PNG и JPG. Однако, когда я пробую изображения среднего -размера (, скажем, 300x300 ), я получаю исключение ErrorClosed, предположительно из пакета HTTP (. и обнаружил, что haxr в конечном итоге вызываетNetwork.HTTP.simpleHTTP).

Может ли кто-нибудь пролить свет на причины, по которым вызов simpleHTTPможет завершиться ошибкой с ErrorClosed? Предложения о том, что можно попробовать, и возможные обходные пути также приветствуются.

Вот ссылки на полный вывод tcpdump из успешной загрузки и из неудачной загрузки .

Код (очищенный )также показан ниже на случай, если он пригодится.

import           Network.XmlRpc.Client      (remote)
import           Network.XmlRpc.Internals   (Value(..), toValue)
import           Data.Char                  (toLower)
import           System.FilePath            (takeFileName, takeExtension)
import qualified Data.ByteString.Char8 as B
import           Data.Functor               ((<$>))

uploadMediaObject :: FilePath -> IO Value
uploadMediaObject file = do
  media <- mkMediaObject file
  remote "http://someblog.wordpress.com/xmlrpc.php" "metaWeblog.newMediaObject"
    "default" "username" "password" media

-- Create the required struct representing the image.
mkMediaObject :: FilePath -> IO Value
mkMediaObject filePath = do
  bits <- B.unpack <$> B.readFile filePath
  return $ ValueStruct
    [ ("name", toValue fileName)
   , ("type", toValue fileType)
   , ("bits", ValueBase64 bits)
    ]
  where
    fileName = takeFileName filePath
    fileType = case (map toLower. drop 1. takeExtension) fileName of
                 "png"  -> "image/png"
                 "jpg"  -> "image/jpeg"
                 "jpeg" -> "image/jpeg"
                 "gif"  -> "image/gif"

main = do
  v <- uploadMediaObject "images/puppy.png"
  print v
7
задан Brent Yorgey 1 July 2012 в 22:37
поделиться