2017-12-20 4 views
-1

Wie können wir Params von editText url mit request.GET Methode übergeben. Eigentlich versuche ich eine E-Mail-Adresse als Parameter an eine api übergeben, die an api-url b angefügt werden sollte.Pass params Verwenden GET-Methode mit Volley-Bibliothek

Ich habe von here erfahren, dass getParams() nicht auf der GET-Methode aufgerufen wird, so scheint es, dass Sie es der URL hinzufügen müssen, bevor Sie die Anfrage senden. schlagen mir eine Lösung, die Aufgabe zu erreichen ..

wenn i REG_URL pass = "http://ec2-54-147-238-136.compute-1.amazonaws.com/hmc/api/registeruser?email [email protected] "; es Rückkehr Erfolg = wahre Antwort wie erwartet, weil Benutzer registriert ist, aber wenn ich REG_URL = "http://ec2-54-147-238-136.compute-1.amazonaws.com/hmc/api/registeruser und pass die params (Wert aus EditText erhalten und in getParams() -Methode verwenden params.put) .response ist immer Erfolg = false dh params hier nicht angebracht ist, mit url
mein Code.

package com.example.mts3.hammadnewsapp; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.preference.PreferenceManager; 
import android.provider.SyncStateContract; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

import com.android.volley.AuthFailureError; 
import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.HashMap; 
import java.util.Map; 
import java.util.Objects; 

public class RegisterActivity extends AppCompatActivity { 

    Button btn_verf; 
    EditText et_Email; 
    String u_emails,stat; 
    AlertDialog.Builder alertDialog; 
    private static final String TAG = "LoginActivity"; 
    SharedPreferences sharedPreferences; 
    SharedPreferences.Editor editor; 

    Context context; 
// public static String firstname, lastname, useremail, userphone, userpass; 


// String REG_URL="http://ec2-54-147-238-136.compute-1.amazonaws.com/hmc/api/[email protected]"; 
    String REG_URL="http://ec2-54-147-238-136.compute-1.amazonaws.com/hmc/api/registeruser"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register); 

     btn_verf=findViewById(R.id.btn_reg_send_vf_code); 
     et_Email=findViewById(R.id.et_reg_email); 
     alertDialog =new AlertDialog.Builder(RegisterActivity.this); 
//  u_emails=et_Email.getText().toString().trim(); 


     btn_verf.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       callApi(); 
      } 
     }); 
    } 

    private void callApi() { 
//  Log.e(TAG, "onClick: "); 
     /*if (!utility.isInternetConnected()) { 
      Toast.makeText(LoginActivity.this, "Please check your internet connection.", Toast.LENGTH_SHORT).show(); 
      return; 
     }*/ 
//  dialog = utility.showProgressDialog(LoginActivity.this, "Please wait"); 
     final String email = et_Email.getText().toString().trim(); 

//  Log.e(TAG, "onClick: email = " + email); 

//  JSONObject params = new JSONObject(); 
/* 
     HashMap<String,String> params=new HashMap<>(); 
     params.put("email",email);*/ 
     /*try { 
//   params.getString("email"); 
      params.put("email",email); 
      Log.e(TAG, "getParams: param = " + "try of put prams"); 
     } catch (JSONException e){ 
      Log.e(TAG, "getParams: param = " + "catch of put prams"); 
      e.printStackTrace(); 
     }*/ 
     RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this); 



     StringRequest stringRequest = new StringRequest(Request.Method.GET, REG_URL, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String response) { 
       Toast.makeText(RegisterActivity.this, "REsponse: " + response, Toast.LENGTH_SHORT).show(); 
      } 


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

      } 
     }){ 
      @Override 
      protected Map<String, String> getParams() throws AuthFailureError { 
       HashMap<String,String> params=new HashMap<>(); 
//    params.put("email",email); 
       params.put("email",email); 
       return params; 

      } 
     };  queue.add(stringRequest); 


    } 
} 
+0

Was sind die Herausforderungen nach dem Passieren der Parameter in der URL? – Xenolion

+0

Können Sie Ihren Code dort veröffentlichen, wo Sie mit dem Problem konfrontiert sind –

+2

Sie haben eine Frage und die Lösung geschrieben. Was ist das Problem? – Puneet

Antwort

1

Wie @Puneet vorgeschlagen arbeitete für mich, die wie:

getParams nur für POST Anfragen genannt wird. GET Anforderungen haben keinen Körper und daher wird getParams nie aufgerufen. Für eine einfache Anfrage wie Ihre fügen Sie einfach die Parameter zu Ihrem URL hinzu und verwenden Sie diese konstruierte URL, um diese Anfrage an Ihren Server (REG_URL + "?email=" + email) zu stellen.

+0

Ich habe gerade Ihre Antwort formatiert! und es ist gut! +1. ** Happy Coding! **. – Xenolion

0

die Parameter zu übergeben Sie müssen eine Klasse für die Schlüssel/Wert-Paare erstellen

1) Erstellen Sie eine Klasse KeyValuePair mit zwei Feldern key und value mit entsprechenden Konstruktor- und Getter-Setter-Methoden.

2) Nun, für jeder Parameter, müssen Sie ein Objekt dieser Klasse, das heißt für einen Schlüssel Benutzernamen mit Wert [email protected], das Objekt würde new KeyValuePair("username", "[email protected]") erstellen. Jetzt

3), benötigen Sie einen List zu erstellen, um diese Parameter zu speichern und diese Liste an die unten Methode mit Ihrer Basis-URL übergeben,

public static String generateUrl(String baseUrl, List<KeyValuePair> params) { 
    if (params.size() > 0) { 
     for (KeyValuePair parameter: params) { 
      if (parameter.getKey().trim().length() > 0) 
       baseUrl += "&" + parameter.getKey() + "=" + parameter.getValue(); 
     } 
    } 
    return baseUrl; 
} 

4) Geben Sie diese baseUrl zu Ihrem Request.