Acesso de cookie dentro de uma classe HTTP

5

Eu tenho uma classe HTTP que possui um método Get e Post. É uma classe simples que criei para encapsular as solicitações Post e Get, para que eu não precise repetir o código get / post em todo o aplicativo.

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

Eu fiz do CookieJar uma propriedade porque quero preservar os valores do cookie durante a sessão. Se o usuário está logado no Twitter com meu aplicativo, cada pedido que faço (seja ele recebido ou postado) eu quero usar os cookies para que eles permaneçam logados.

Esse é o básico de qualquer maneira. Mas não quero retornar uma string em todas as instâncias. Às vezes eu posso querer o cookie, ou um valor de cabeçalho, ou algo mais da solicitação.

Idealmente, gostaria de poder fazer isso no meu código:

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

ou

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

Minha pergunta - Para fazer isso, eu precisaria ter uma classe Get, e uma classe Post, que estão incluídas na classe HTTP e são acessíveis através de acessores?

Dentro da classe Get e Post, eu teria o método Cookie e a propriedade body e o que for necessário.
Devo também usar uma interface ou criar uma classe Request e ter o Post e o Get estendidos para que métodos e propriedades comuns estejam disponíveis para ambas as classes?

Ou estou pensando totalmente errado?

    
por James Jeffery 22.07.2013 / 02:24
fonte

1 resposta

2

Para c #, você pode usar System.Net .HttpWebRequest ? Essa classe também parece oferecer suporte a cookies em solicitações HTTP, pois parece que eles estão desativados por padrão (você pode ativá-los), conforme observado aqui:

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

Se você estiver tentando criar sua própria turma para fins de aprendizado, essa classe ainda poderá servir como um ponto de referência valioso.

    
por 04.12.2013 / 20:53
fonte