web-dev-qa-db-ja.com

Android Volley APIをどのように使用しますか?

次のプロジェクトでAndroid Volleyライブラリを実装することを考えています( Google IO Volleyについてのプレゼンテーション )。

ただし、そのライブラリ用の本格的なAPIは見つかりませんでした。

Volleyを使用して、ファイルをアップロードし、POST/GETリクエストを実行し、GsonパーサーをJSONパーサーとして追加するにはどうすればよいですか?

ソースコード

73
user1940676

編集:最後にここにあります 公式トレーニング 「Volley library」について

ボレーライブラリに関するいくつかの例を見つけました

これがあなたを助けることを願っています

105
Abdrahmn_msi

残念ながら、今までJavaDocsのようなVolleyライブラリのドキュメントはありません。インターネット上のgithubといくつかのチュートリアルでのみレポします。したがって、唯一の良いドキュメントは source code :)です。ボレーで遊んだとき、私はこれを読みました tutorial

Post/getについては、これを読むことができます: Volley-POST/GET parameters

お役に立てれば

10

これは、Volleyを使用してPOSTリクエストを行うための図です。 StringRequestは、文字列の形式で応答を取得するために使用されます。
レストAPIがJSONを返すと仮定します。 APIからのJSON応答は、ここでStringとして受信されます。これを再度JSONに変換して、さらに処理できます。コードにコメントを追加しました。

StringRequest postRequest = new StringRequest(Request.Method.POST, "PUT_YOUR_REST_API_URL_HERE",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        final JSONObject jsonObject = new JSONObject(response);
                        // Process your json here as required
                    } catch (JSONException e) {
                        // Handle json exception as needed
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    String json = null;
                    NetworkResponse response = error.networkResponse;
                    if(response != null && response.data != null){
                        switch(response.statusCode) {
                            default:
                                String value = null;
                                try {
                                    // It is important to put UTF-8 to receive proper data else you will get byte[] parsing error.
                                    value = new String(response.data, "UTF-8");
                                } catch (UnsupportedEncodingException e) {
                                    e.printStackTrace();
                                }
                                json = trimMessage(value, "message");
                                // Use it for displaying error message to user 
                                break;
                        }
                    }
                    loginError(json);
                    progressDialog.dismiss();
                    error.printStackTrace();
                }  
                public String trimMessage(String json, String key){
                    String trimmedString = null;
                    try{
                        JSONObject obj = new JSONObject(json);
                        trimmedString = obj.getString(key);
                    } catch(JSONException e){
                        e.printStackTrace();
                        return null;
                    }
                    return trimmedString;
                }
            }
    ) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("abc", "pass abc");
            params.put("xyz", "pass xyz");
            // Pass more params as needed in your rest API
    // Example you may want to pass user input from EditText as a parameter
    // editText.getText().toString().trim()
            return params;
        }  
        @Override
        public String getBodyContentType() {
            // This is where you specify the content type
            return "application/x-www-form-urlencoded; charset=UTF-8";
        }
    };

    // This adds the request to the request queue
    MySingleton.getInstance(YourActivity.this)
.addToRequestQueue(postRequest);

//以下はMySingletonクラスです

public class MySingleton {
    private static MySingleton mInstance;
    private RequestQueue mRequestQueue;
    private static Context mCtx;  
    private MySingleton(Context context) {
        mCtx = context;
        mRequestQueue = getRequestQueue();
    }

    public static synchronized MySingleton getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new MySingleton(context);
        }
        return mInstance;
    }

    public RequestQueue getRequestQueue() {
        if (mRequestQueue == null) {
            // getApplicationContext() is key, it keeps you from leaking the
            // Activity or BroadcastReceiver if someone passes one in.
            mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
        }
        return mRequestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req) {
        getRequestQueue().add(req);
    }
}
3
developer1011

Volley.jarライブラリーをプロジェクトに追加するだけです。その後

Androidドキュメントに従って:

// Instantiate the RequestQueue.
RequestQueue queue = Volley.newRequestQueue(this);
String url ="http://www.google.com";

// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        // process your response here

    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        //perform operation here after getting error
    }            
});
// Add the request to the RequestQueue.
queue.add(stringRequest);

詳細については、 Volleyの使用方法 を参照してください。

1
pathe.kiran

上記のすべての回答をテストする前に、以下を含めます

compile 'com.Android.volley:volley:1.0.0'

gradleファイルで、マニフェストファイルにインターネットアクセス許可を追加することを忘れないでください。

0
Kanagalingam

このクラスを使用します。データベースに接続する簡単な方法を提供します。

public class WebRequest {

    private Context mContext;
    private String mUrl;
    private int mMethod;
    private VolleyListener mVolleyListener;

    public WebRequest(Context context) {
        mContext = context;
    }

    public WebRequest setURL(String url) {
        mUrl = url;
        return this;
    }

    public WebRequest setMethod(int method) {
        mMethod = method;
        return this;
    }

    public WebRequest readFromURL() {
        RequestQueue requestQueue = Volley.newRequestQueue(mContext);
        StringRequest stringRequest = new StringRequest(mMethod, mUrl, new Response.Listener<String>() {
            @Override
            public void onResponse(String s) {
                mVolleyListener.onRecieve(s);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                mVolleyListener.onFail(volleyError);
            }
        });

        requestQueue.add(stringRequest);
        return this;
    }

    public WebRequest onListener(VolleyListener volleyListener) {
        mVolleyListener = volleyListener;
        return this;
    }

    public interface VolleyListener {
        public void onRecieve(String data);

        public void onFail(VolleyError volleyError);
    }
}

使用例:

new WebRequest(mContext)
     .setURL("http://google.com")
     .setMethod(Request.Method.POST)
     .readFromURL()
     .onListener(new WebRequest.VolleyListener() {
         @Override
         public void onRecieve(String data) {
         }

         @Override
         public void onFail(VolleyError volleyError) {
         }
     });
0
Hadi Note
private void userregister() {

  final  ProgressDialog pDialog = new ProgressDialog(this);
    pDialog.setMessage("Loading...");
    pDialog.show();

    RequestQueue queue = Volley.newRequestQueue(SignupActivity.this);
    String url = "you";
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    pDialog.cancel();

                    try {
                        JSONObject jsonObject= new JSONObject(response.toString());
                        Log.e("status", ""+jsonObject.getString("status"));
                        if(jsonObject.getString("status").equals("success"))
                        {
                            String studentid=jsonObject.getString("id");
                            Intent intent=new Intent(SignupActivity.this, OTPVerificationActivity.class);
                            startActivity(intent);
                            finish();
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                    Log.e("String ", ""+response);

                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    }) {

        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String, String> params = new HashMap<>();
            params.put("password", input_password.getText().toString());
            params.put("cpassword", input_reEnterPassword.getText().toString());
            params.put("email", input_email.getText().toString());
            params.put("status", "1");
            params.put("last_name", input_lastname.getText().toString());
            params.put("phone", input_mobile.getText().toString());
            params.put("standard", input_reStandard.getText().toString());
            params.put("first_name", input_name.getText().toString());
            params.put("refcode", input_reReferal.getText().toString());
            params.put("created_at","");
            params.put("update_at", "");
            params.put("address", input_address.getText().toString());
            return params;
        }
    };
    // Add the request to the RequestQueue.
    queue.add(stringRequest);

ここで完全なコードを取得

簡単な方法で

 private void load() {
    JsonArrayRequest arrayreq = new JsonArrayRequest(ip.ip+"loadcollege.php",
            new Response.Listener<JSONArray>() {

                @Override
                public void onResponse(JSONArray response) {

                    Album a;

                    try {
                        JSONArray data = new JSONArray(response.toString());
                        for (int i = 0; i < data.length(); i++) {
                            JSONObject c = data.getJSONObject(i);
                            one = c.getString("cname").split(",");
                            two=c.getString("caddress").split(",");
                            three = c.getString("image").split(",");
                            four = c.getString("cid").split(",");
                            five = c.getString("logo").split(",");




                            a = new Album(one[0].toString(),two[0].toString(),ip.ip+"images/"+ three[0].toString(),four[0].toString(),ip.ip+"images/"+ five[0].toString());
                            albumList.add(a);

                        }
                        adapter.notifyDataSetChanged();


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            // The final parameter overrides the method onErrorResponse() and passes VolleyError
            //as a parameter
            new Response.ErrorListener() {
                @Override
                // Handles errors that occur due to Volley
                public void onErrorResponse(VolleyError error) {
                    Log.e("Volley", "Error");
                }
            }
    );
    // Adds the JSON array request "arrayreq" to the request queue
    requestQueue.add(arrayreq);
}
0
Thasreef Mogral