0

私はHttpClientを使い始めたばかりで、それを使って自分のウェブサイトにログインしています。問題は、Cookie を取得できないため、ログインしたままにできないことです。

これが私のコードですが、おそらくあまり良くありません...誰かがこのライブラリでクッキーを処理する方法を教えてもらえますか? それとも、詳細を学べるドキュメントやチュートリアルが存在するのでしょうか? (私はすでにオンラインドキュメントをチェックしましたが、あまり役に立ちませんでした)。

public MyHttpClient() {     
    this.client = new DefaultHttpClient();
    this.client.getParams().setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);
}       

/**
 * Retourne le contenu d'une requête POST
 * @param url L'url de la requêtes
 * @return Le contenu de la réponse à a reque^te
 */
public String sendRequest(String[] args){     
    String requestResponse = "";
    HttpPost post = new HttpPost(MyHttpClient.AJAX_API_URL);
    try {            
        //Test avec httpClient
        HttpResponse response;
        HttpEntity entity;

        //Déclaration de la liste des valeurs
        List<BasicNameValuePair> listKeys = new ArrayList<>();
        for(int i = 0; i < args.length; i += 2){
            listKeys.add(new BasicNameValuePair(args[i],args[i+1]));
        }

        //On ajoute les clefs à la requete
        post.setEntity(new UrlEncodedFormEntity(listKeys,Consts.UTF_8));

        response = client.execute(post);            
        entity = response.getEntity();

        //Récupération des cookies
        for(Cookie cookie : client.getCookieStore().getCookies()){
            this.listCookies.add(cookie);                
            Logger.getLogger(MyHttpClient.class.getName()).log(Level.INFO, "Cookie "+cookie.getName());
        }

        requestResponse = EntityUtils.toString(entity);
    } catch (IOException ex) {
        Logger.getLogger(MyHttpClient.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        post.releaseConnection();
    }

    return requestResponse;
}
4

1 に答える 1

0

たぶん、次のcookieStoreように独自に設定してみてください:

private HttpClient client;
private CookieStore cookieStore;
private HttpContext httpContext;

そして、初期化で:

            cookieStore = new BasicCookieStore();
            httpContext = new BasicHttpContext();
            httpContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore);

あなたのsendRequest方法では:

HttpResponse response = client.execute(post, httpContext);

ここの私のjavautilsレポで完全なコードをチェックアウトできます

于 2013-05-31T08:12:13.807 に答える