2012-09-05 14 views
-1

在第二次調用時找不到會話在我的應用程序中,我試圖使用api從服務器上取回數據。因爲我試圖獲取facebook數據,所以當我調用url的時候,第一次。代碼是這樣的,它應該從另一個url被調用時從服務器獲取數據。使用android

我的問題是,當我第二次調用url時,我得到一個空值。這是會話正在被刪除。 我的代碼如下。

public void getdetails(){ 
    JSONObject json = JSONfunctions.getJSONfromURL(unielement+"UserLogin.php?faceid="+facebookID); 
    System.out.println(unielement+"UserLogin.php?faceid="+facebookID+" "+json); 

    try{ 
     JSONArray data = json.getJSONArray("data"); 
     //Loop the Array 
     for(int i=0;i < data.length();i++){      

      ArrayList<String> list = new ArrayList<String>(); 

      list.add(data.getJSONObject(0).getString("CreditBySelf")); 
      list.add(data.getJSONObject(0).getString("CreditThroughFriend")); 
      list.add(data.getJSONObject(0).getString("ForUser")); 
      list.add(data.getJSONObject(0).getString("LDrawTicket")); 
      list.add(data.getJSONObject(0).getString("Buy-In")); 
      list.add(data.getJSONObject(0).getString("RemVote")); 
      list.add(data.getJSONObject(0).getString("Voted")); 
      StringBuilder sb = new StringBuilder(); 
      for (String s : list) 
      { 
       sb.append(s); 
       sb.append("\t"); 
      } 
      uid = list.get(0); 
      name = list.get(1).toString(); 
      System.out.println(list); 
      textView_name1.setText(name); 

     } 
    } 
    catch(JSONException e1){ 
     Toast.makeText(getBaseContext(), "No name Found"+e1 ,Toast.LENGTH_LONG).show(); 
    } catch (ParseException e1) { 
     e1.printStackTrace(); 
    } 

} 

當我調用上述函數時會創建一個會話,當我調用下面的代碼時它應該在那裏。

public void getdataforsharing(){ 

    JSONObject json = JSONfunctions.getJSONfromURL(unielement+"userfbaction.php"); 
    System.out.println(unielement+"userfbaction.php "+json); 

    try{ 
     JSONArray wholedata = json.getJSONArray("data"); 
     System.out.println(wholedata); 
     JSONObject data = wholedata.getJSONObject(0); 
     System.out.println(data); 
     //Loop the Array 
     for(int i=0;i < data.length();i++){      

      list1 = new ArrayList<String>(); 
      /*list1.add(data.getJSONObject(0).getString("wall_image")); 
      list1.add(data.getJSONObject(0).getString("wall_title")); 
      list1.add(data.getJSONObject(0).getString("wall_Description"));*/ 
      list1.add(data.getString("wall_image")); 
      list1.add(data.getString("wall_title")); 
      list1.add(data.getString("wall_Description")); 

      StringBuilder sb = new StringBuilder(); 
      for (String s : list1) 
      { 
       sb.append(s); 
       sb.append("\t"); 
      } 
      System.out.println("Share on facebook"+list1.get(0)); 
     } 
    } 
    catch(JSONException e1){ 
     Toast.makeText(getBaseContext(), "No name Found"+e1 ,Toast.LENGTH_LONG).show(); 
    } catch (ParseException e1) { 
     e1.printStackTrace(); 
    } 
} 

當我調用這個函數時,我沒有得到第一個函數創建的會話,我得到一個空數據。

這是什麼問題?任何人都可以幫助我。

回答

1

會話在「UserLogin.php」中創建。

會話處於PHP通過使用會話ID的其可以是受控的:

  1. 作爲查詢參數傳遞;您需要接收會話ID,然後在下次打電話時添加到URL中,或者在Cookie中傳遞
  2. ;您需要收到Cookie,然後在下次打電話時將Cookie發送到URL。

你的代碼並沒有這樣做:你只接受JSON回來,你沒有在cookie中讀取並下次發送,也沒有在數據中接收SessionID並在下次調用時使用它。你的情況


最簡單的辦法:

  1. 在第一次調用,返回的內容 「SESSION_ID()」 作爲JSON的一部分。以後記住它,存儲在內存或文件中 - 但是你需要它。
  2. 在第二呼叫到userfbaction.php,發送SESSION_ID作爲參數
  3. 在userfbaction.php,讀取參數並調用「SESSION_ID()」傳入的session_id在session_start()之前。這將繼續前一屆
+0

Thankyou幫助我羅比..我認爲它會工作。 –