【问题标题】:How to send parameters to backend, and get response message, using GET method in volley, android?如何在 volley、android 中使用 GET 方法向后端发送参数并获取响应消息?
【发布时间】:2018-08-20 15:12:09
【问题描述】:

我想向后端发送三个参数“guestEmail”、“纬度”和“经度”,如果成功则从后端获取成功消息。

我试过这样做:

public void myGetFunc()
{

final String url = "....";

// prepare the Request
JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, url, null,
    new Response.Listener<JSONObject>() 
    {
        @Override
        public void onResponse(JSONObject response) {   
                        // display response     
            Log.d("Response", response.toString());
Toast.makeText(getApplicationContext(), response.toString(), Toast.LENGTH_SHORT).show();
        }
    }, 
    new Response.ErrorListener() 
    {
         @Override
         public void onErrorResponse(VolleyError error) {            
            Log.d("Error.Response", response);
       }
    }
)

{

    @Override
    protected Map<String, String> getParams() 
    {  
            Map<String, String>  params = new HashMap<String, String> ();  
            params.put("guestEmail", "abc@xyz.com");  
            params.put("latitude", "12");
            params.put("longitude", "12");

            return params;  
    }
};

// add it to the RequestQueue   
queue.add(getRequest);
}

单击“SOS”按钮时会调用此方法。 但是现在,点击“SOS”按钮没有任何反应。

请帮忙!

【问题讨论】:

    标签: android get android-volley


    【解决方案1】:

    如果您打算使用 GET 查询参数并自己构建字符串

    private static final String URL = "http://www.test.com?value1={val1}&value2={val2}";
    
    String requestString = URL;
    requestString.replace("{val1}", "1");
    requestString.replace("{val2}", "Bob");
    
    StringRequest strreq = new StringRequest(Request.Method.GET,
         requestString,
          new Response.Listener<String>() {
             @Override
             public void onResponse(String Response) {
                      // get response
             }
          }, new Response.ErrorListener() {
             @Override
             public void onErrorResponse(VolleyError e) {
                e.printStackTrace();
             }
    });
    Volley.getInstance(this).addToRequestQueue(strreq);
    

    如果您要使用 POST 我们的身体

    public class LoginRequest extends Request<String> {
    
        // ... other methods go here
    
        private Map<String, String> mParams;
    
        public LoginRequest(String param1, String param2, Listener<String> listener, ErrorListener errorListener) {
            super(Method.POST, "http://test.url", errorListener);
            mListener = listener;
            mParams = new HashMap<String, String>();
            mParams.put("paramOne", param1);
            mParams.put("paramTwo", param2);
    
        }
    
        @Override
        public Map<String, String> getParams() {
            return mParams;
        }
    }
    

    【讨论】:

    • Zachary Sweigart,我们是否在 onResponse 方法中从服务器获得响应?我没听懂。
    【解决方案2】:

    如果你想传递参数而不是你需要使用 POST 方法,否则 GET ,只需在 URL 本身中传递值。

    【讨论】:

    • 你能告诉我如何在 URL 中传递它吗?例子?
    • 你可以这样通过。对于 ex - www.yoursite.com?myparam1={id1}&myparam2={id2}...在你的情况下 www.yoursite.com?guestEmail=abc@xyz.com&latitude=12&longitude=12
    • 兄弟,只是一个简单的问题。我将电子邮件存储在字符串“guestEmail”中,纬度为“strLat”,经度为“strLng”。 URL 是否应该是:“www.yoursite.com?guestEmail=guestEmail&latitude=strLat&longitude=strLng” 我使用它时出错了。不确定是 URL 格式错误还是其他原因。
    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2019-02-23
    • 2023-04-01
    • 1970-01-01
    • 2016-07-23
    • 2020-04-16
    相关资源
    最近更新 更多