2013-05-17 4 views
1

Мне нужно сделать два запроса на сервер. В первом запросе я отправляю параметр userID = 1, и сервер возвращает файл cookie _session_ID. Теперь я посылаю второй запрос без параметров, и результат должен быть таким же, как в первый раз. Но cookie не отправляется. Зачем?Запрос HttpPost с кукисами

Это мой код:

public class Server 
{ 
    static HttpClient httpclient; 
    static HttpPost  httppost; 
    static String  JsonString; 
    static HttpResponse response; 
    static List <NameValuePair> nameValuePairs; 
    static CookieStore cookieStore; 
    static HttpContext localContext; 
    static List<Cookie> cookies; 
    static int cookieSize; 

    public static void Clear() 
    { 
     try 
     { 
      cookieStore = new BasicCookieStore(); 
      localContext = new BasicHttpContext();  
      localContext.setAttribute(ClientContext.COOKIE_STORE, cookieStore); 

      httpclient  = new DefaultHttpClient(); 
      httppost  = new HttpPost("http://mobile-app-storage.herokuapp.com/test"); 
      nameValuePairs = new ArrayList <NameValuePair> (2); 
      nameValuePairs.add(new BasicNameValuePair("userID", "1")); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      response  = httpclient.execute(httppost, localContext);    
      JsonString = ReadFromServer(response.getEntity().getContent()); 

      Log.e("Request", "1"); 
      cookies = cookieStore.getCookies(); 
      cookieSize = cookies.size(); 
      for (int i = 0; i < cookieSize; i++) 
      { 
       Log.v("Cookie "+ i, "name: "+cookies.get(i).toString()); 
      } 

      // Second request without userID. Must be same result as first 

      httpclient  = new DefaultHttpClient(); 
      httppost  = new HttpPost("http://mobile-app-storage.herokuapp.com/test"); 
      nameValuePairs.clear(); 
      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      response  = httpclient.execute(httppost);   
      JsonString = ReadFromServer(response.getEntity().getContent()); 

      Log.e("Request", "2"); 
      cookies = cookieStore.getCookies(); 
      cookieSize = cookies.size(); 
      for (int i = 0; i < cookieSize; i++) 
      { 
       Log.v("Cookie "+ i, "name: "+cookies.get(i).toString()); 
      } 
     } 
     catch (Throwable e) {Log_.Error(e);} 
    } 
} 

ответ

1

Во втором вызове вы не делаете

httpclient.execute(httppost, localContext); 
Смежные вопросы