во FlUrl я пытаюсь использовать EnableCookies(), и он выдает исключение нулевой ссылки

когда я пытаюсь выполнить:

            using (var fc = new FlurlClient().EnableCookies())
            {
                var resp = "http://somesite.com".GetAsync();
                // var getResp = await "http://api.foo.com".GetAsync();

                var resultado = await resp;

                var x = resultado;
            }

Я получаю исключение нулевой ссылки на EnableCookies()

куча:

   en Flurl.Url.op_Implicit(Url url) en C:\Aldenteware\Flurl\code\Flurl\Url.cs:línea 315
   en Flurl.Http.CookieExtensions.GetCookieContainer(FlurlClient client) en C:\Aldenteware\Flurl\code\Flurl.Http.Shared\CookieExtensions.cs:línea 145
   en Flurl.Http.CookieExtensions.EnableCookies(FlurlClient client) en C:\Aldenteware\Flurl\code\Flurl.Http.Shared\CookieExtensions.cs:línea 23
   en AfipProcesa.Form1.<flurlAsync>d__0.MoveNext() en c:\Users\fabian.LH\Documents\Visual Studio 2013\Projects\AfipProcesa\AfipProcesa\Form1.cs:línea 86
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
   en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   en System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   en AfipProcesa.Form1.<button1_Click>d__7.MoveNext() en c:\Users\fabian.LH\Documents\Visual Studio 2013\Projects\AfipProcesa\AfipProcesa\Form1.cs:línea 119
--- Fin del seguimiento de la pila de la ubicación anterior donde se produjo la excepción ---
   en System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__4(Object state)

Я должен сделать что-то еще или по-другому?

Я поместил его в обработчик ошибок flurl, но он его не поймал (поскольку это нулевой пример)

Я начинаю использовать await/async и flurl одновременно... извините, если я делаю основную ошибку.

Я использую в качестве примера код на http://tmenier.github.io/Flurl/client-lifetime/

using (var fc = new FlurlClient().EnableCookies())
{
    await url
        .AppendPathSegment("login")
        .WithClient(fc)
        .PostUrlEncodedAsync(new { user = "user", pass = "pass" });

    var page = await url
        .AppendPathSegment("home")
        .WithClient(fc)
        .GetStringAsync();

    // Need to inspect the cookies? FlurlClient exposes them as a dictionary.
    var sessionId = fc.Cookies["session_id"].Value;
}

person FabianSilva    schedule 22.06.2016    source источник


Ответы (1)


Похоже, вы заметили ошибку, связанную с недавними изменениями для решения этой проблемы. Обходной путь заключается в том, чтобы заполнить FlurlClient базовым URL-адресом:

using (var fc = new FlurlClient(url).EnableCookies())

Я зарегистрирую эту проблему и решу ее в ближайшее время, она явно не работает так, как задокументировано.

person Todd Menier    schedule 23.06.2016
comment
Большое спасибо, теперь это работает, извините, что не очень помог загрузить исходный код и проверить, что происходит, я пытался, но у меня vs2013, я все еще изучаю httpclient, и моя идея состоит в том, чтобы использовать flurl для замены watin+IE автоматизировать ежедневную автоматическую проверку банковских движений =) - person FabianSilva; 23.06.2016
comment
Без проблем. Выпуск 1.0 Flurl.Http очень близок, поэтому я очень рад, что вы заметили эту вопиющую ошибку. Я обновил документы, чтобы отразить обходной путь, по крайней мере, пока я не исправлю ошибку. - person Todd Menier; 23.06.2016