2017-02-14 20 views
0

私のアプリでは、私はvolleyライブラリを使用してjsonデータを取得しています。volleyライブラリを使用してパラメータをWebサービスに渡し、json配列の応答を取得する方法は?

private void getProductName(final String id) { 

    pDialog.setMessage("Please wait.."); 
    pDialog.setTitle("Loading"); 
    showDialog(); 

    JsonArrayRequest req = new JsonArrayRequest(Constants.DARSHAN_URL+Constants.PRODUCT_NAME, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 

        try { 
         // Parsing json array response 
         // loop through each json object 
         for (int i = 0; i < response.length(); i++) { 

          JSONObject person = (JSONObject) response.get(i); 

          String material_id = person.getString("material_id"); 
          String material_desc = person.getString("material_desc"); 

          HashMap<String, String> maim_category_array = new HashMap<>(); 

          maim_category_array.put("material_id", material_id); 
          maim_category_array.put("material_desc", material_desc); 

          productName.add(maim_category_array); 

         } 

         adapter = new GridviewAdapter(ProductNameActivity.this, productName); 
         grid.setAdapter(adapter); 
         grid.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
          @Override 
          public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 

           HashMap<String, String> map = (HashMap<String, String>)arg0.getItemAtPosition(position); 

           Toast.makeText(ProductNameActivity.this, map.get("material_id"), Toast.LENGTH_LONG).show(); 
           Intent i = new Intent(ProductNameActivity.this, SubProductActivity.class); 
           i.putExtra("BREADCRUMB1", map.get("material_desc")); 
           i.putExtra("MATERIAL_ID", map.get("material_id")); 
           i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); 
           startActivity(i); 
          } 
         }); 

         // txtResponse.setText(jsonResponse); 

        } catch (JSONException e) { 
         e.printStackTrace(); 
         Toast.makeText(getApplicationContext(), 
           "Error: " + e.getMessage(), 
           Toast.LENGTH_LONG).show(); 
        } 

        hideDialog(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      Toast.makeText(getApplicationContext(), 
        error.getMessage(), Toast.LENGTH_SHORT).show(); 
      hideDialog(); 
     } 
    }) { 

     @Override 
     protected Map<String, String> getParams() { 
      // Posting parameters to login url 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("material_id", id); 

      return params; 
     } 

    }; 

    // Adding request to request queue 
    DarshanApplication.getInstance().addToRequestQueue(req); 
} 

私はURLにmaterial_idを渡しています: は、以下のWebサービスにパラメータを渡すために私のコードです。しかし、応答を得るにはcom.android.volley.servererror

問題を解決するにはどうすればよいですか? 助けてください!

+2

「servererror」はサーバーエラーがあることを意味していませんか?そしてそれは正確にservererrorですか?どのエラーコードとメッセージ?コードをデバッグした後に –

+0

エラーが発生しました:com.android.volley.servererror。エラーメッセージは空です。 – Android

+0

@Sweekar受信したエラー応答を確認します。それが間違っていた場所を教えてくれます。事前準備クライアントのようなツールを使用してパラメータを確認してください – Stallion

答えて

0

私はなぜボレーを使いたいのかわかりませんが、別の方法もあります。私は、JSONを取得して表示するためにjavaとandroidメソッドをビルドして使用します。 ここをクリックしてください。

» JsonFetch
+0

Webサービスメソッドにパラメータを送信する際に問題があります。フェーシング・ジーソンではありません。 – Android

+0

ああ!同じ方法でもサーバーに投稿することができます。あなたはポストするリクエストメソッドを作らなければなりません。 –

関連する問題