Accesso ai cookie all'interno di una classe HTTP

5

Ho una classe HTTP che ha un metodo Get e Post. È una classe semplice che ho creato per incapsulare le richieste Post e Get in modo da non dover ripetere il codice get / post in tutta l'applicazione.

In C #:

class HTTP
{
    private CookieContainer cookieJar;
    private String userAgent = "...";

    public HTTP()
    {
        this.cookieJar = new CookieContainer();
    }

    public String get(String url)
    {
        // Make get request. Return the JSON
    }

    public String post(String url, String postData)
    {
        // Make post request. Return the JSON
    }
}

Ho reso la proprietà CookieJar perché voglio conservare i valori dei cookie durante la sessione. Se l'utente ha effettuato l'accesso a Twitter con la mia domanda, ogni richiesta che faccio (sia che venga inviata o posta), voglio utilizzare i cookie in modo che rimangano loggati.

Comunque sono le basi. Ma, non voglio restituire una stringa in tutte le istanze. A volte posso desiderare il cookie, o un valore di intestazione, o qualcos'altro dalla richiesta.

Idealmente mi piacerebbe poterlo fare nel mio codice:

Cookie cookie = http.get("http://google.com").cookie("g_user");
String g_user = cookie.value;

o

String source = http.get("http://google.com").body;

La mia domanda - Per fare ciò, dovrei avere una classe Get e una classe Post, che sono incluse nella classe HTTP e sono accessibili tramite gli accessor?

All'interno della classe Get and Post avrei quindi il metodo Cookie e la proprietà body e qualsiasi altra cosa necessaria.
Dovrei usare anche un'interfaccia, o creare una classe Request e avere Post e Get estendere in modo che i metodi e le proprietà comuni siano disponibili per entrambe le classi?

Oppure, sto pensando assolutamente di sbagliato?

    
posta James Jeffery 22.07.2013 - 02:24
fonte

1 risposta

2

Per C #, puoi usare System.Net .HttpWebRequest ? Anche questa classe sembra supportare i cookie nelle richieste HTTP, ritenendo che siano disattivati per impostazione predefinita (è possibile attivarli), come indicato qui:

For security reasons, cookies are disabled by default. If you want to use cookies, use the CookieContainer property to enable cookies.

Se stai provando a creare la tua classe per scopi di apprendimento, allora quella classe potrebbe ancora servire come prezioso punto di riferimento.

    
risposta data 04.12.2013 - 20:53
fonte

Leggi altre domande sui tag