2016-06-22 5 views
0

lorsque je tente d'exécuter:dans Flurl J'essaie d'utiliser EnableCookies() et lancer une exception de référence null

  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; 
      } 

Je reçois une exception de référence null sur EnableCookies()

pile:

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) 

Je dois faire quelque chose de plus ou d'une autre manière?

je l'ai mis sur un gestionnaire d'erreurs Flurl mais pas l'attraper (comme il est un ex null)

Je commence à utiliser await/async et Flurl en même temps ... désolé si je fais une erreur de base.

I en utilisant comme exemple le code sur 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; 
} 

Répondre

2

On dirait que vous avez repéré un bug lié aux changements récents pour répondre this issue. Le travail autour est de semences FlurlClient avec l'URL de base:

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

Je connecte cette question et adresse ça marche bientôt, il ne clairement pas aussi documenté.

+0

merci beaucoup, ça marche maintenant, désolé de ne pas être d'une grande aide pour télécharger la source et me vérifier ce qui se passe, j'ai essayé mais j'ai vs2013, j'apprends encore tout sur httpclient et mon idée est d'utiliser flurl pour remplacer watin + IE pour automatiser la vérification automatique des mouvements bancaires chaque jour =) – FabianSilva

+1

Pas de problème. La version 1.0 de Flurl.Http est très proche, donc je suis vraiment content que vous ayez repéré ce bug flagrant. J'ai mis à jour les docs pour refléter le work-around, au moins jusqu'à ce que je répare le bug. –