Я не знаю, почему мой код ломается. Сначала я подумал, что это потому, что 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, отправляемые туда и обратно между моим клиентским кодом и сервером?
Сообщение об ошибке происходит от tls, а не от http-conduit, поэтому я не уверен, что это действительно изменение в http-кабеле. Можете ли вы попробовать перекомпилировать http-enumerator против новейшего пакета tls и посмотреть, что произойдет? –
У меня только есть tls 0.8.5 (последний афайк), так что это должен быть то, с чем строился http-перечислитель. –
@Michael - Вот статус. Я обновил до 0.7.2.5 http-enumerator, который удалил импульс для перехода на http-каналы. Поэтому нет настоятельной срочности. Тем не менее, я бы хотел поиграть с классными детьми и выяснить, как можно работать с http-каналами. –