[英]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.