如何用android volley basic auth发送请求?

时间:2018-05-24 10:46:04

标签: android header android-volley basic-authentication

我想发送一个基本身份验证请求。

我的标题

Username       :        EBA
Token          :       34242353453456563DSFS

我的gsonRequestClass如下:

public GsonRequest(int method, String url, Class<T> responseClass,
                       Map<String, String> parameters, Map<String, String> headers, Listener<T> listener,
                       ErrorListener errorListener) {
        super(method, url, errorListener);
        this.mListener = listener;
        this.mResponseClass = responseClass;
        this.mParameters = parameters;
        this.mHeaders = headers;
    }

    /**
     * Header getter method
     *
     * @return
     * @throws AuthFailureError
     */
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        return mHeaders != null ? mHeaders : super.getHeaders();
    }

请提供任何建议或示例代码?

1 个答案:

答案 0 :(得分:1)

  

如果您要对token api提供商进行身份验证,例如googleyahoofacebooktwitter .. etc {{ 1}}为所有etc等提供代码示例,并且您不需要使用凌空。

但是当你在排球上问了问题并且我已经使用凌空开发了这么多Android应用程序时,我开始回答server-side languages like PHP, JAVA

我假设..

  1. 您已成功链接了排球罐依赖关系。
  2. 您已设置并运行您的网络服务器
  3. 您想使用这些凭据登录自己的服务器用户名:EBA和密码:34242353453456563DSFS
  4. 您想要对此登录请求做出响应,或者想要获取一些数据作为对此请求的回复。
  5. 我们走了......

    向服务器页面发出http请求的Java代码:

    volley

    如果您成功导入库...上面的代码只需要将光标放在两行以下并在mac上使用OPT + RETURN来自动插入库;这将导入并包含上述请求所需的包。

    在您的网络服务器上,get_auth.php应该是:

        StringRequest stringRequest = new StringRequest(Request.Method.POST, "https://www.yourserver.com/get_auth.php", 
    new Response.Listener<String>()
    {
        @Override
        public void onResponse(String response)
        {
            serverResponse = response;
    
            // get response string here; if successful
    
            Toast.makeText(getActivity(),response,Toast.LENGTH_LONG).show();
        }
    },
    new Response.ErrorListener()
    {
        @Override
        public void onErrorResponse(VolleyError error)
        {
            serverResponse = error.toString();
    
            // If request could not be placed then error report here
    
            Toast.makeText(getActivity(),error.toString(),Toast.LENGTH_LONG).show();
        }
    })
    
    {
    @Override
    protected Map<String,String> getParams()
    {
        Map<String,String> params = new HashMap<String, String>();
        params.put("Username",FirstLast);
        params.put("Token",EmailField.getText().toString());
        return params;
    }};
    
    RequestQueue requestQueue = Volley.newRequestQueue(getActivity());
    requestQueue.add(stringRequest);
    

    通过这种方式,从web服务器,你必须回显/ json您的数据回到请求应用程序

      

    Java代码已经<?php if($_SERVER['REQUEST_METHOD']=='POST') { $UserInput = $_POST['Username']; $UserId = $_POST['Token']; $con = mysqli_connect("localhost", "id4859061_instapromo", "sandhya12345","id4859061_instapromo"); if (!$con) { echo "EXCEPTION_CODE_1"; exit(); } $result = $con->query("SELECT * FROM USERS WHERE `DEVID` = '$UserId' AND `KEYGEN` = '$UserInput'"); if (!$result) { echo "EXCEPTION_CODE_2"; exit(); } if ($result->num_rows == 0) { echo "FAILURE"; exit(); } if ($result->num_rows == 1) { $row = $result->fetch_assoc(); $TempThisDate = $row["VALUEDATE"]; $InstDate = DateTime::createFromFormat('d/m/Y',$TempThisDate); $InstallDate = $InstDate->format('d-m-Y'); $Response = "SUCCESS#".$InstallDate; echo $Response; exit(); } if ($result->num_rows > 1) { echo "REDUNDANT_RECORDS_FOUND"; exit(); } } else { echo "EXCEPTION_CODE_3"; } 从PHP页面发送此服务器响应。这是一个基本的工作和一步一步的例子。我希望你或其他人觉得这很有用。