2016-03-28 4 views
2

私はアンドロイド開発にかなり新しいです、私はPHPサービスにIDを送るアンドロイド・ボレー・リクエストをしようとしています、そして、それがサーバ側で合致すれば、 jsonでそれをアンドロイドアプリで受信して表示します。すべてのヘルプはアンドロイド・ボレー・ポスト・パラメータと受信json

<?php 

require("include/config.php"); 

if (!empty($_POST)) { 

    $query = " SELECT * FROM music WHERE musicID = :ID " ; 

    $query_params = array(
     ':ID' => $_POST['ID'], 


      ); 

    try { 
     $statement = $db->prepare($query); 
     $result = $statement->execute($query_params); 
    } 
    catch (PDOException $ex) { 


     $response["success"] = 0; 
     $response["message"] = " error"; 
     die(json_encode($response)); 

    } 

    $result = $statement->fetchAll(); 

    if($result){ 

      $return =array(); 

      foreach($result as $rows){ 
     $json = array(); 
     $json["title"] = $rows["title"]; 
     $json["rating"]= $rows["rating"]; 
     $json["Price"] = $rows["Price"]; 
     $json["Description"] = $rows["Description"]; 

     array_push ($return,$json); 



      } 
    echo stripcslashes(json_encode($datareturn, JSON_PRETTY_PRINT)); 








    } 




} else { 
} 

?> 

を高く評価しますアンドロイドボレー要求

JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(URL, new Response.Listener<JSONArray>() { 
      @Override 
      public void onResponse(JSONArray response) { 

       for(int i=0;i<response.length();i++){ 
        try{ 
         JSONObject obj=response.getJSONObject(i); 
         Item item=new Item(); 
         item.setTitle(obj.getString("title")); 
         item.setImage(obj.getString("image")); 


         //add to array 
         array.add(item); 
        }catch(JSONException ex){ 
         ex.printStackTrace(); 
        } 
       } 
       adapter.notifyDataSetChanged(); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 
     AppController.getmInstance().addToRequesQueue(jsonArrayRequest,ID); 
+0

あなたは直面している問題は何ですか? –

+0

私はサーバーから何も戻っていません。アイテム配列が空です。正確に何が起こっていないのか理解できません。私はhtml形式でスクリプトをダブルチェックし、うまく動作します。 javaコードのリクエストで何か間違っている –

+0

あなたのサーバー上で 'ID'フィールドをどうやって受け取っていますか? RequestBodyまたはurlパス。 –

答えて

1

問題は、あなたがPOST要求を持って、で、残念ながら、JsonArrayためPOST要求を送信するためにボレーでは直接constructorはありません。

アンドロイドボレーチーム

は多分それを後で追加しますが、今のところ、あなたはこれを行うことができます。

ステップ1:あなたのクラスを作成し、JsonArrayRequestは、あなたがオーバーライドする必要があります拡張します。

public class CustomJsonArrayRequest extends JsonArrayRequest { 
    public CustomJsonArrayRequest(int method, String url, JSONObject jsonRequest, Listener<JSONArray> listener, ErrorListener errorListener) { 
     super(method, url, jsonRequest, listener, errorListener); 
    } 
} 

ステップ2:今、あなたは簡単にそれを使用してリクエストを送信することができ、要求を送信するためのコンストラクタを持っていること。

また、このIDをURLに渡す必要があります。

他に質問する必要がある場合はお知らせください。 :)

+0

クラスiはすでにベースアクティビティを拡張していますので、CustomeJsonArrayという新しいクラスを作成する必要がありますか? –

+1

うん!新しいクラスCustomJsonArrayRequestを作成してください! 'ID'フィールドをどこに置いていいのか教えてください。 –

+0

OK。 IDはintent.putextraを使用して前のアクティビティからこのアクティビティに渡され、文字列として格納されます。 –

関連する問題