Android Volley 如何使用 volley 在 POST 请求中发送用户名和密码以及其他参数

Posted

技术标签:

【中文标题】Android Volley 如何使用 volley 在 POST 请求中发送用户名和密码以及其他参数【英文标题】:Android Volley How to send username and password with other parameters in a POST request using volley 【发布时间】: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 请求中添加用户凭据和参数?

【问题讨论】:

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

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

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

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

【讨论】:

BackendConnection.uploadDataUrl 有服务器的URL @Prasad 我知道这一点。我只是认为你也可以在那里使用“localhost”,除非服务器实际上也在手机上运行,​​否则这不会有太大帮助,这是不太可能的,

以上是关于Android Volley 如何使用 volley 在 POST 请求中发送用户名和密码以及其他参数的主要内容,如果未能解决你的问题,请参考以下文章

Volley源码看这一篇就够了

Volley源码看这一篇就够了

如何使用 Gradle 替换 Android Volley 库?

如何在 Android 中使用 Volley 库进行肥皂发布请求

如何在 android 中使用 volley 实现 Digest 身份验证

如何在Android开发中高效使用Volley网络框架