使用参数从服务器解析Json数据

时间:2015-12-31 14:38:49

标签: android json android-volley

我是android新手。我正在制作一个应用程序,我使用齐射库从服务器获取数据。但是当我们使用id或参数时,我不知道如何从服务器获取数据。请帮忙。

public class MainActivity extends AppCompatActivity {

    Button btn_next,btn_search,cross;
    TextView title;
    EditText et;

    private ProgressDialog pDialog;

    public static final String JSON_URL = "http://bcshymns.com/heading.php";

    private Button buttonGet;

    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    cross=(Button)findViewById(R.id.cross);
        et=(EditText)findViewById(R.id.search);
        btn_next=(Button)findViewById(R.id.btnnext);
        btn_search=(Button)findViewById(R.id.btnsearch);
        title=(TextView)findViewById(R.id.tv_title);
        btn_search.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cross.setVisibility(View.VISIBLE);
                title.setVisibility(View.INVISIBLE);
                et.setVisibility(View.VISIBLE);
            }
        });
        cross.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                title.setVisibility(View.INVISIBLE);
                btn_search.setVisibility(View.VISIBLE);
            }
        });
        btn_next.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this, Subheading.class);
                startActivity(i);
            }
        });



        listView = (ListView) findViewById(R.id.listView);
       sendRequest();

        pDialog = new ProgressDialog(this);
        // Showing progress dialog before making http request
        pDialog.setMessage("Loading...");
        pDialog.show();


       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
              //  String product = ((TextView) view).getText().toString();
                Intent i=new Intent(getApplicationContext(),Subcontent_main.class);
                startActivity(i);
            }
        });
    }

    private void sendRequest(){

        StringRequest stringRequest = new StringRequest(JSON_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        showJSON(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(MainActivity.this,error.getMessage(),Toast.LENGTH_LONG).show();

                    }
                });

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);

    }

    private void showJSON(String json){
        ParseJSON_Heading pj = new ParseJSON_Heading(json);
        pj.parseJSON();
        CustomList cl = new CustomList(this, ParseJSON_Heading.heading,ParseJSON_Heading.from,ParseJSON_Heading.to);
        listView.setAdapter(cl);
        hidePDialog();
    }


    private void hidePDialog() {
        if (pDialog != null) {
            pDialog.dismiss();
            pDialog = null;
        }
    }

}`


public class ParseJSON_Heading {
    public static String[] heading;
    public static String[] from;
    public static String[] to;
    public static String[] id;


    public static final String JSON_ARRAY_SUBHEADING = "tbl_heading";
    public static final String JSON_ARRAY_HEADING = "tbl_heading";
    public static final String KEY__HEADING_ID = "intheadingId";
    public static final String KEY_TEXT_HEADING = "vchheading";
    public static final String KEY_TEXT_FROM = "vchfrom";
    public static final String KEY_TEXT_TO = "vchto";

    private JSONArray users = null;

    private String json;

    public ParseJSON_Heading(String json){
        this.json = json;
    }

    protected void parseJSON(){
        JSONObject jsonObject=null;
        try {
            jsonObject = new JSONObject(json);
            users = jsonObject.getJSONArray(JSON_ARRAY_HEADING);
            id=new String[users.length()];
            heading = new String[users.length()];
            from = new String[users.length()];
            to = new String[users.length()];

            for(int i=0;i<users.length();i++){
                JSONObject jo = users.getJSONObject(i);
                id[i]=jo.getString(KEY__HEADING_ID);
                heading[i] = jo.getString(KEY_TEXT_HEADING);
                from[i] = jo.getString(KEY_TEXT_FROM);
                to[i] = jo.getString(KEY_TEXT_TO);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果需要提交请求参数,则必须覆盖getParams()方法,该方法应返回以键值格式发送的参数列表。

在下面的代码中,我们提交姓名,电子邮件和密码作为请求参数。

JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
            url, null,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d(TAG, response.toString());
                    pDialog.hide();
                }
            }, new Response.ErrorListener() {

                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d(TAG, "Error: " + error.getMessage());
                    pDialog.hide();
                }
            }) {

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<String, String>();
            params.put("name", "foo");
            params.put("email", "abc@gmail.com");
            params.put("password", "foobar");

            return params;
        }

    };
相关问题