F# — использование HttpFs.Client и Hopac: как получить код ответа, заголовки ответов и файлы cookie ответов?

Я использую F# с HttpFs.Client и Hopac.

Я могу получить тело ответа и значение каждого узла ответа JSON/XML, используя такой код:

[<Test>]
let ``Test a Create user API``() = 
    let response = Request.createUrl Post "https://reqres.in/api/users"
                   |> Request.setHeader (Accept "application/json")
                   |> Request.bodyString ReadFile
                   |> Request.responseAsString
                   |> run



        printfn "Response of get is %s: " response
        let info = JsonValue.Parse(response)
        let ID = info?id

        printfn "ID in Response is %i: " (ID.AsInteger())

Но как мне получить код ответа, заголовки ответов и файлы cookie ответов? Мне нужно получить это внутри того же метода, что и показанный выше, чтобы я мог выполнять утверждение и для этих элементов.

Я пробовал response.StatusCode, response.Cookies.["cookie1"], но такие методы не появляются, когда я добавляю период после ответа.


person Sanjay Kumar    schedule 12.06.2020    source источник
comment
Вы уверены, что используете HttpFs.Client? из вашего кода я думаю, что вы используете этот fsharp.github.io/FSharp. Данные/библиотека/Http.html   -  person Nghia Bui    schedule 12.06.2020
comment
@NghiaBui Спасибо за исправление, я внес изменения, чтобы показать пример HttpFs.Client. Дайте мне знать, если у вас есть решение для извлечения кода ответа, заголовков ответов и файлов cookie ответов с помощью HttpFs.Client.   -  person Sanjay Kumar    schedule 12.06.2020


Ответы (1)


let response = 
    Request.createUrl Post "https://reqres.in/api/users"
    |> Request.setHeader (ContentType (ContentType.create("application", "json")))
    |> Request.bodyString token //Reading content of json body
    |> HttpFs.Client.getResponse
    |> run

Прочтите документ https://github.com/haf/Http.fs.

Пункт 3 показывает, как получить доступ к файлам cookie и заголовкам в ответе.

response.StatusCode
response.Body // but prefer the above helper functions
response.ContentLength
response.Cookies.["cookie1"]
response.Headers.[ContentEncoding]
response.Headers.[NonStandard("X-New-Fangled-Header")]
person Koenig Lear    schedule 12.06.2020
comment
@koenigLear- я проверил документ и попытался подать заявку, но я не вижу таких методов, как StatusCode, файлы cookie и т. д., когда я помещаю ответ (период) после получения ответа, например let response = Request.createUrl Post reqres.in/api/users |› Request.setHeader (Принять приложение/json) |› Request.bodyString ReadFile |› Запрос .responseAsString |› выполнить - person Sanjay Kumar; 13.06.2020
comment
@SanjayKumar см. пример выше - person Koenig Lear; 13.06.2020
comment
Спасибо за предоставленный фрагмент кода. Столько шума вокруг использования пробелов и отступов в F#. Нужно знать, как работает этот JobBuilder. - person Sanjay Kumar; 13.06.2020
comment
Пожалуйста, поделитесь, есть ли другой способ, кроме создания кода, такого как jobBuilder? - person Sanjay Kumar; 13.06.2020