Ich denke darüber nach, die Android Volley-Bibliothek in meinen nächsten Projekten zu implementieren ( Google IO-Präsentation über Volley ).
Ich habe jedoch keine seriöse API für diese Bibliothek gefunden.
Wie lade ich Dateien hoch, mache POST / GET-Anfragen und füge JSON
mit Volley einen Gson-Parser als Parser hinzu?
android
android-volley
user1940676
quelle
quelle
Antworten:
Edit: endlich hier ist es ein offizielles Training über "Volley Library"
Ich habe einige Beispiele über die Volley-Bibliothek gefunden
6 Beispiele von Ognyan Bankov:
Ein gutes einfaches Beispiel von Paresh Mayani
anderes Beispiel von HARDIK TRIVEDI
Hoffe das hilft dir
quelle
Leider gibt es bisher keine Dokumentation für eine Volley-Bibliothek wie JavaDocs. Repo nur auf Github und mehreren Tutorials über das Internet. Das einzig gute Dokument ist also der Quellcode :). Als ich mit Volley gespielt habe, habe ich dieses Tutorial gelesen .
Über post / get können Sie Folgendes lesen: Volley - POST / GET-Parameter
Hoffe das hilft
quelle
Dies ist eine Illustration zum Erstellen einer POST-Anfrage mit Volley. StringRequest wird verwendet, um eine Antwort in Form eines Strings zu erhalten.
Angenommen, Ihre Rest-API gibt einen JSON zurück. Die JSON-Antwort von Ihrer API wird hier als String empfangen, den Sie erneut in JSON umwandeln und weiterverarbeiten können. Kommentare im Code hinzugefügt.
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);
// Unten ist die MySingleton-Klasse
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); } }
quelle
Fügen Sie Ihrem Projekt einfach die Bibliothek volley.jar hinzu. und dann
Gemäß Android-Dokumentation:
// 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);
Weitere Hilfe finden Sie unter Benutzer von Volley
quelle
Auf einfache Weise
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); }
quelle
Bevor Sie alle oben genannten Antworten testen, schließen Sie ein
compile 'com.android.volley:volley:1.0.0'
in Ihrer Gradle-Datei und vergessen Sie nicht, die Internet-Berechtigung zu Ihrer Manifest-Datei hinzuzufügen.
quelle
Verwenden Sie diese Klasse. Es bietet Ihnen eine einfache Möglichkeit, eine Verbindung zur Datenbank herzustellen.
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); } }
Anwendungsbeispiel:
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) { } });
quelle
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);
Den vollständigen Code erhalten Sie hier
quelle