-1

私のアプリケーションでは、API を使用してサーバーからデータを取得しようとしています。Facebook データを取得しようとしていたので、初めて URL を呼び出すときに facebookid を渡しています。コードは、別のときにサーバーからデータを取得する必要があるようなものです。 url が呼び出されます。

私の問題は、2回目にURLを呼び出すときにnull値を取得していることです。これは、セッションが削除されていることです。私のコードを以下に示します。

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();
    }
}

この関数を呼び出すと、最初の関数によって作成されたセッションが取得されず、null データが取得されます。

これの何が問題なのですか?誰か助けてください。

4

1 に答える 1

1

セッションは「UserLogin.php」に作成されます。

セッションは、次のいずれかの SessionID を使用して PHP で制御されます。

  1. クエリ パラメータとして渡されます。セッション ID を受け取り、次回の呼び出し時に URL に追加する必要があります。または、
  2. Cookie で渡されます。Cookie を受信して​​から、次回の呼び出し時にその URL に Cookie を送信する必要があります。

コードはどちらも行っていません。JSON を受け入れるだけで、Cookie を読み取って次回送信することも、データで SessionID を受信して​​次の呼び出しで使用することもありません。


あなたの場合の最も簡単な解決策:

  1. 最初の呼び出しで、「session_id()」の内容を json の一部として返します。後で覚えておき、メモリまたはファイルに保存しますが、必要に応じて保存してください。
  2. userfbaction.php への 2 回目の呼び出しで、その session_id をパラメーターとして送信します。
  3. userfbaction.php で、パラメーターを読み取り、session_start() の前に session_id を渡して "session_id()" を呼び出します。これにより、前のセッションが続行されます
于 2012-09-05T07:00:05.743 に答える