【问题标题】:Android Volley How to send username and password with other parameters in a POST request using volleyAndroid Volley 如何使用 volley 在 POST 请求中发送用户名和密码以及其他参数
【发布时间】:2016-11-12 09:05:11
【问题描述】:

我有一个完美运行的 curl 命令 curl --request POST --user xyz@mail.com:password http://localhost:8080/api/uploadmydata -d 'param1=300'

但是我不能用凌空做同样的事情。 我当前的代码是:

public static void tryUploading(final Activity activity){

    StringRequest stringRequest = new StringRequest(Request.Method.POST, BackendConnection.uploadDataUrl,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //textPrompt.setText("Wrong User name or Password");
                }
            }){
        @Override
        public Map<String, String> getHeaders() {
            Map<String, String> params = new HashMap<String, String>();
            params.put(
                    "Authorization",
                    String.format("Basic %s", Base64.encodeToString(
                            String.format("%s:%s", "xyz@mail.com", "password").getBytes(), Base64.DEFAULT)));
            params.put("param1", 300);

            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(activity);
    requestQueue.add(stringRequest);
}

我正在使用 Spring Boot 作为服务器。在上面的服务器中,代码触发了用户名和密码的验证,但稍后无法到达预期的 url。 如何像 curl --user 和 -d 一样在 volley 请求中添加用户凭据和参数?

【问题讨论】:

  • @SohailZahid 在链接中,您没有覆盖 getHeaders() 并且没有发送用户名和密码。我知道如何发送参数。但是如何用凭据发送它是我正在寻找的。​​span>
  • 你为什么要覆盖getHeaders,你可以在安全加密文件的参数中发送它们。
  • 在服务器端,我已经配置拦截凭据。
  • 没问题你可以在应用md5后发送文件并在接收时再次解码它吗?在发布请求时不需要天气。

标签: android android-volley restful-url


【解决方案1】:

由于我看不到您的应用程序中使用的 URL,我只需要询问您使用的 URL 是否与 CURL 中的相同。

此外,如果您的 CURL 是在您的服务器运行的计算机上执行的,您必须相应地更改应用程序中的 IP 地址,因为 localhost 指的是同一设备。

因此,除非您的服务器没有在您的智能手机上运行,​​否则您必须使用计算机 IP 地址,而不是 localhost。

【讨论】:

  • BackendConnection.uploadDataUrl 有服务器的URL
  • @Prasad 我知道这一点。我只是认为你也可以在那里使用“localhost”,除非服务器实际上也在手机上运行,​​否则这不会有太大帮助,这是不太可能的,
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 2017-06-30
相关资源
最近更新 更多