【问题标题】:how to pass id with url while requesting?请求时如何通过 url 传递 id?
【发布时间】:2014-11-10 19:52:12
【问题描述】:

loginpage.java 这是我的登录页面活动。

我正在使用这个 json {"status":"success","msg":"Your are now Login Successfully","user_login_id":2650}

在这里,当用户成功登录时,我会得到一个唯一的字段 (user_login_id)。它工作正常。

登录后我使用的是 Activity 类的 Navigationdrawer,它具有不同类型的片段行为,其中之一是 HomeFragment,它使用 Fragment 扩展。

在那个 HomeFragment 类中,我想在列表视图中获取一些 json 数据。因为我有另一个 json 文件。它有以下链接,如 http://sdfkjksd.com/apps/matching?version=apps&user_login_id=2650

公共类 HomeFragment 扩展片段 {

NavDrawerListAdapter adapters;
private ProgressDialog pDialog;
//JSON parser class
JSONParsing jsonParser = new JSONParsing();

String result = "";

List<HashMap<String,String>> aList;

private static final String TAG_USERID="user_login_id";

private static final String MATCH_URL = "http://sdfa.com/apps/matching?version=apps&user_login_id="+TAG_USERID;




JSONArray matching=null;
private static final String TAG_SUCCESS = "status";
private static final String TAG_MATCH="matching";
private static final String TAG_NAME="name";
private static final String TAG_PROFILE="profile_id";
private static final String TAG_IMAGE="image";
private static final String TAG_CAST="cast";
private static final String TAG_AGE="age";
private static final String TAG_LOCATION="location";

        private ListView listview;
        ArrayAdapter<String> adapter;
public HomeFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    //String strtext = getArguments().getString("user_login_id");

    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    aList = new ArrayList<HashMap<String,String>>();
   /* Bundle bundle = this.getArguments();
    if(bundle != null){
        String i = bundle.getString("user_login_id", TAG_USERID);
    }*/



    new LoadAlbums().execute();



    return rootView;
}

class LoadAlbums extends AsyncTask<String, String, String> {

    /**
     * Before starting background thread Show Progress Dialog
     * */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(HomeFragment.this.getActivity());
        pDialog.setMessage("Loading...");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(false);
        pDialog.show();
    }
    protected String doInBackground(String... args) {
        // Building Parameters
        List<NameValuePair> params = new ArrayList<NameValuePair>();

        params.add(new BasicNameValuePair("version", "apps"));
        // getting JSON string from URL
        String json = jsonParser.makeHttpRequest(MATCH_URL, "POST",
                params);

        // Check your log cat for JSON reponse
        Log.d("Albums JSON: ", "> " + json);

        try {              

            JSONObject Jasonobject = new JSONObject(result);
            JSONArray Jarray = Jasonobject.getJSONArray("matching");


            if (Jarray != null) {
                // looping through All data
                for (int i = 0; i < Jarray.length(); i++) {
                    JSONObject c = Jarray.getJSONObject(i);

                    // Storing each json item values in variable
                    String user_name = c.getString(TAG_NAME);
                    String user_profile=c.getString(TAG_PROFILE);
                    String user_image=c.getString(TAG_IMAGE);
                    String user_cast=c.getString(TAG_CAST);
                    String user_age=c.getString(TAG_AGE);
                    String user_location=c.getString(TAG_LOCATION);



                    // creating new HashMap
                    HashMap<String, String> map = new HashMap<String, String>();

                    // adding each child node to HashMap key => value
                    map.put(TAG_NAME,user_name);
                    map.put(TAG_PROFILE, user_profile);
                    map.put(TAG_IMAGE, user_image);
                    map.put(TAG_CAST, user_cast);
                    map.put(TAG_AGE, user_age);
                    map.put(TAG_LOCATION, user_location);



                    // adding HashList to ArrayList
                    aList.add(map);
                }
            }else{
                Log.d("Albums: ", "null");
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return null;
    }


    protected void onPostExecute(String file_url) {
        // dismiss the dialog after getting all albums
        pDialog.dismiss();
        // updating UI from Background Thread
        runOnUiThread(new Runnable() {
            public void run() {
                /**
                 * Updating parsed JSON data into ListView
                 * */
                SimpleAdapter adapter = new SimpleAdapter(
                        getActivity().getBaseContext(), aList,
                        R.layout.list_item_matchs, new String[] { TAG_NAME,TAG_PROFILE,TAG_IMAGE,TAG_CAST,TAG_AGE,TAG_LOCATION
                         }, new int[] {
                                R.id.txtproname,R.id.txtprofileage,R.id.propic,R.id.txtprofilecast,R.id.txtprofileplace});

                // updating listview

                listview.setAdapter(adapter);

            }


        });

    }
    private void runOnUiThread(Runnable runnable) {
        // TODO Auto-generated method stub

    }

}

}

所以问题是,在那个链接中,我使用的是登录 json 的 user_login_id 字段,所以我想在使用 URL 请求期间发送或传递该字段..

【问题讨论】:

  • @TimBotha 仔细阅读问题

标签: android


【解决方案1】:

我只是建议您为此使用 SharedPreference。当您收到登录响应时,只需解析 JSON,然后获取 log_in_id 字段值并将其保存在 SharedPreferences 中,然后无论何时要使用此值,您都可以在整个应用程序中使用.

【讨论】:

  • 我想通过 URL 传递 id 可以吗?
  • @Eddie 是的,只需将您的 id 附加到 url。 sdfkjksd.com/apps/matching?version=apps&user_login_id=+YOUR 登录 ID 变量
  • @Eddie 你的意思是,它不清楚。您只想附加您的登录 ID,然后只需将其附加到 String 变量即可。
  • 是的,我尝试了你的想法,它对我有一点帮助..但是我的匹配页面的数据没有解析它显示空白..它的 json 数据是 {"matching":[{"name": "Daniel Bryan","profile_id":"","image":"path"}]}..所以我的输出现在是 {"matching":""}
【解决方案2】:

您已经在 doInBackground 中使用了相同的方法: 这是为下一次准备的建议编辑:

  1. 将“user_login_id”添加到参数列表
  2. 如果是这样,请将 POST 更改为 GET。

    受保护的字符串 doInBackground(String... args) { // 建筑参数 列表参数 = new ArrayList();

        params.add(new BasicNameValuePair("version", "apps"));
    
        // add the user_login_id to params.
       params.add(new BasicNameValuePair("user_login_id ", "265"));
        // getting JSON string from URL 
       // I think you are using GET bcz the url shows the parameters.
        String json = jsonParser.makeHttpRequest(MATCH_URL, "GET",
                params);
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 2016-04-03
    • 2018-01-28
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 2022-07-13
    相关资源
    最近更新 更多