当我尝试执行时:

            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错误处理程序上,但没有捕获到它(因为它是null前)

我开始同时使用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;
}

最佳答案

您似乎已发现与地址this issue的最新更改有关的错误。解决方法是为FlurlClient使用基本URL:

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

我将记录此问题并尽快解决,显然它无法按记录工作。

关于c# - 在FlUrl中,我尝试使用EnableCookies()并抛出空引用异常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37979363/

10-10 00:22