2012-02-06 10 views
3

Я не знаю, почему мой код ломается. Сначала я подумал, что это потому, что parseURL дает [] для requestHeaders. Ладно, так что, может быть, мне просто нужно сказать, что такое resquestHeaders. Хорошо, я изучил requestHeaders, сгенерированный из моего старого рабочего кода. Он также возвращает []. Так что теперь у меня нет идей. Ниже приведен старый рабочий код, следуя моим вещам, которые я пытался использовать в GHCi, с новой библиотекой, основанной на каналах.Миграция из Network.HTTP.Enumerator в Network.HTTP.Conduit

captureRawJson :: IO Response 
captureRawJson = do 
    nManager <- newManager 
    jRequest <- parseUrl url :: (IO (Request IO)) 
    jResponse <- httpLbsRedirect jRequest nManager 
    closeManager nManager 
    return jResponse 

вышеприведенные работает отлично, вот что я пытался сделать во время миграции, и ошибка я получаю.

Prelude Network.HTTP.Conduit> nManager <- newManager def 
Prelude Network.HTTP.Conduit> jRequest <- parseUrl "https://10.69.69.1/cgi-bin/qaLinkEditor.cgi?json=1" :: (IO (Request IO)) 
Prelude Network.HTTP.Conduit> let response = httpLbs jRequest nManager 
Prelude Network.HTTP.Conduit Control.Monad.Trans.Resource> runResourceT response 
*** Exception: error unexpected packet: Handshake [ServerHelloDone] 

Как вы можете видеть, это почти точно такой же код. Поэтому мне хотелось бы получить отзывы о том, что изменилось, и о том, что я должен смотреть более внимательно. Кроме того, как я могу просмотреть заголовки http, отправляемые туда и обратно между моим клиентским кодом и сервером?

+0

Сообщение об ошибке происходит от tls, а не от http-conduit, поэтому я не уверен, что это действительно изменение в http-кабеле. Можете ли вы попробовать перекомпилировать http-enumerator против новейшего пакета tls и посмотреть, что произойдет? –

+0

У меня только есть tls 0.8.5 (последний афайк), так что это должен быть то, с чем строился http-перечислитель. –

+0

@Michael - Вот статус. Я обновил до 0.7.2.5 http-enumerator, который удалил импульс для перехода на http-каналы. Поэтому нет настоятельной срочности. Тем не менее, я бы хотел поиграть с классными детьми и выяснить, как можно работать с http-каналами. –

ответ

2

Я считаю, что это было решено с некоторыми изменениями в пакетах tls. Я только что выпустил http-conduit 1.2.5, пожалуйста, посмотрите и посмотрите, разрешит ли он проблему.

Если вы все еще получаете сообщение об ошибке, возможно, сертификат SSL не соответствует имени хоста, с которым вы подключаетесь.