繁体   English   中英

Android Volley JSON发布登录

[英]Android Volley JSON Post Login

我正在尝试创建一个使用用户名和密码的登录名,并将该信息以及经过身份验证的标头发布到服务器并检索JSON对象。 getHeaders()返回正确的数据,而public byte[] getBody()也返回正确的信息。 但是,我仍然收到415错误。 此代码中没有任何内容?

import android.util.Base64;

import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.StringRequest;

import java.util.HashMap;
import java.util.Map;

public class LoginRequest extends StringRequest {

    private static final String LOGIN_REQUEST_URL = "https://foobar.com";
    private Map<String, String> params;

    public LoginRequest(String username, String password,    Response.Listener<String> listener) {
        super(Method.POST, LOGIN_REQUEST_URL, listener, null);
        params = new HashMap<>();
        params.put("username", username);
        params.put("userpin", password);
    }

    @Override
    public Map<String, String> getParams() {
        return params;
    }

    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
        Map<String, String> headers = new HashMap<>();

        // Temporary Auth
        String username = "abc@foobar.com";
        String password = "password";
        String credentials = username + ":" + password;
        String base64EncodedCredentials =
                Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP);
        headers.put("Content-Type", "application/json");
        headers.put("Authorization", "Basic " + base64EncodedCredentials);

        return headers;
    }

    @Override
    public byte[] getBody() throws AuthFailureError {
        //RAW PAYLOAD
        // {"username":"abc@foobar.com","userpin":"1234"}
        String str = "{\"username\":\"" + params.get("username") + "\",\"userpin\":\"" + params.get("userpin") + "\"}";

        return str.getBytes();
    }

    @Override
    public String getBodyContentType() {
        return "application/json";
    }

}

尝试将您的函数“ getBody()”更新为

    @Override
    public byte[] getBody() throws AuthFailureError {
        try
        {
            JSONObject aux = new JSONObject(params);
            return aux.toString().getBytes("utf-8");
        } catch (UnsupportedEncodingException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

尝试通过更改:

application/json

变成:

application/json;charset=utf-8

如果不起作用,请删除此行:

headers.put("Content-Type", "application/json");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM