2016-03-07 3 views
1

Я знаю, как использовать метод Volley GET для входа в систему, но что, если мне нужно указать конкретный «id»? Я передаю «id» элемента списка из удаленной базы данных в другое действие, используя aim.putExtra. В следующем действии, как бы я использовал метод GET от Volleys для анализа и отображения данных из другой таблицы с использованием переданного через «id»?Как использовать метод Android Volley GET с указанным параметром?

В браузере я могу использовать следующее, чтобы получить ответ с указанным URL и параметра:

http://localhost/demoapp/fetch.php?pid=2 

Но я не знаю, как передать этот URL на запрос Volley и отображать ответ в список. Что-то вроде этого:

"http://localhost/demoapp/fetch.php?pid=" + pid 

Где «pid» будет переданной строкой соответствующего идентификатора.

EDIT: PHP код

<?php 
include_once("config.php"); 

$query=mysqli_query($con,"SELECT * FROM comments WHERE pid=".$_GET['pid']); 

$array; 
while($result=mysqli_fetch_assoc($query)){ 

$array[]=$result; 
} 

echo json_encode($array); 
?> 

EDIT 2: JAVA код Основная деятельность

JsonArrayRequest request = new JsonArrayRequest(url+url_file, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); try { 
          for(int i=0;i<response.length();i++){ 
           String pid=response.getJSONObject(i).getString("pid"); 
           String name=response.getJSONObject(i).getString("product_name"); 
           String img; 
           String thumb = response.getJSONObject(i).getString("product_thumb"); 
           String detail = response.getJSONObject(i).getString("product_detail"); 
           String rating = response.getJSONObject(i).getString("product_rating"); 

           img = response.getJSONObject(i).getString("product_pic"); 

           rowdata.add(new ProductRowData(pid,name,img,thumb,detail,rating)); 
          } 
         } catch (JSONException e) { 
          // TODO Auto-generated catch block 
          e.printStackTrace(); 
         } 
         adapter=new ProductsAdapter(MainActivity.this, rowdata); 
         list.setAdapter(adapter); 
         dialog.dismiss(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.d(TAG, "Error: " + error.getMessage()); 
       dialog.dismiss(); 
      } 
     }); 

     VolleyController.getInstance().addToRequestQueue(request, tag_json_arry); 

Когда элемент списка щелкают, остальная часть данных передается к деталям с использованием функции intent.putExtra. То, что я тогда пытаюсь сделать, - при нажатии на FAB, должен быть показан список комментариев из другой таблицы с этим идентификатором продуктов.

+0

Что Проблема заключается в том, что вы сталкиваетесь с методом GET? Кажется, вы следуете правильной процедуре. –

+0

@JyotmanSingh Попытка выяснить, как получить ответ json в приложении для Android. См. Мою следующую редакцию. –

+1

Вы упомянули, что знаете, как использовать метод Volley GET. Используйте его так же, как вы использовали его для входа. Используйте 'JsonObjectRequest', чтобы получить данные json, а затем проанализируйте его и покажите в своем приложении. –

ответ

2

Если вы хотите использовать GET, можно создать запрос с параметрами URL:

String uri = String.format("http://localhost/demoapp/fetch.php?pid=%1$s", pid); 

StringRequest myReq = new StringRequest(Method.GET, 
            uri, 
            createMyReqSuccessListener(), 
            createMyReqErrorListener()); 

Или лучше, вы можете использовать POST:

StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://localhost/demoapp/fetch.php", new Response.Listener<String>() 
{ 
    @Override 
    public void onResponse(String s) 
    { 
    } 
}, new Response.ErrorListener() 
{ 
    @Override 
    public void onErrorResponse(VolleyError volleyError) 
    { 
    } 
}) 
{ 
    @Override 
    protected Map<String, String> getParams() 
    { 
     Map<String, String> params = new HashMap<String, String>(); 
     params.put("id", pid); 
     return params; 
    } 
}; 

Взято из: Volley - POST/GET parameters

+0

Если бы я пошел с методом POST, мне пришлось бы перейти на PHP-код на '. $ _ POST ['pid']' вместо '. $ _ GET ['pid']'? –

+0

Да, вы должны изменить свой сервер. – dan

+0

Если я изменю метод в моем PHP и попытаюсь использовать тот же url с добавленным параметром, я получаю неопределенный индекс на id –

Смежные вопросы