2017-12-20 1 views
-1

request.GETメソッドを使用してeditTextからurlにパラメータを渡すにはどうすればよいですか? 実際にはapiにパラメータとして電子メールアドレスを渡そうとしていますが、これはapi-urlに接続する必要があります。パラメータを渡すvolleyライブラリを使用してGETメソッドを使用する

hereからgetParams()がGETメソッドで呼び出されないことがわかったので、要求を送信する前にURLに追加する必要があるようです。 私はタスクを達成するための解決策を提案します..

私はREG_URL = "http://ec2-54-147-238-136.compute-1.amazonaws.com/hmc/api/registeruser?email = [email protected] "; 登録ユーザー だから、私はREG_URL = "http://ec2-54-147-238-136.compute-1.amazonaws.com/hmc/api/registeruserを設定しているので、それは成功=真の応答を期待どおり返すparamsが(のEditTextから値を取得し、()メソッドのgetParamsにparams.put使用)=偽すなわちparamsを
がここに私のコードでURLに接続されていない.responseは常に成功です。

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

URLにパラメータを渡した後に直面した課題は何ですか? – Xenolion

+0

問題に直面している場所にコードを掲載することができます –

+2

質問とその解決策を投稿しました。どうしたの? – Puneet

答えて

1

はようである私のために働きました。 GETリクエストにボディがないため、getParamsは呼び出されません。あなたのような簡単なリクエストの場合は、URLにパラメータを追加して、それを使ってサーバのリクエストをサーバ(REG_URL + "?email=" + email)に送信してください。

+0

私はちょうどあなたの答えをフォーマットしました!それは良いです! +1。 **ハッピーコーディング!**。 – Xenolion

0

にパラメータを渡すには

1)クラスKeyValuePairを作成し、2つのフィールドkeyとの2つのフィールドを作成します。適切なコンストラクタメソッドとゲッターセッターメソッドを使用して10。

2)さて、パラメータについて、あなたはこのクラスのオブジェクトを作成する必要があり、すなわち、値[email protected]とキーユーザ名のために、オブジェクトがnew KeyValuePair("username", "[email protected]")だろう。

3)さて、あなたは

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)あなたのRequestにこのbaseUrlにを渡し、これらのパラメータを格納し、あなたのベースURLを以下の方法には、このリストを渡すためにListを作成する必要があります。

getParamsのみPOST要求に対して呼び出されます。@Puneetによって示唆されるように

関連する問題