我在C#中编写了一个web api来进行身份验证,使用postman发送参数并正确返回令牌,我会在帖子的末尾留下参数进行测试,并搜索了很多带有参数的例子来自web api的JSON总是发回代码400错误的请求,我只想用Java连接用户和服务器的密码来返回生成的用于该登录的令牌我使用了很多代码甚至一无所有,这就是令牌我设法使用邮差生成但是从Java只能设法生成400个错误请求。
我正在尝试进行身份验证,以便在Android应用中使用它
{
"access_token": "vqWD9rZA2y8ydDxs8uT2L8pWQwjaMURaAcvuytdtq58zCzJS4OcbDJRw8lJQc7YbJ272cmzyhyPA7Ws_2dVH8ywmtwQRscVhZl-AgoLY61vZUDLJ6McJL7L_3zDrO-X5XfAV1DVBgkX8yPWwgVRSfhl17qG5zjuV8duVUBN8j7OvdU_FsTXePfBsamGMaBxzO6_oZjoJ1qPBAoy1AzfXhD4Dvm5Kwk_pJtL9MvfxSNkYKz0WSDNY1C0sm0-O3ml0A-1dr6F-jIiXxSyu90Jb2HHvS16L7mF6vPvvE3tElLV3a509XHRm2LbDTZOdGEHFrNl",
"token_type": "bearer",
"expires_in": 86399
}
url token: http://pedidostf.azurewebsites.net/token
username : admin
password : admin
grant_type : password
这将是我用于连接的最后一种方法
private class POST extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
// InputStream inputStream = null;
String cliente = params[0];
String clave = params[1];
String json = "";
try {
OkHttpClient client = new OkHttpClient();
Request.Builder builder = new Request.Builder();
builder.url(AppConfig.URL_TOKEN);
builder.addHeader("Content-Type", "application/x-www-form-urlencoded");
builder.addHeader("Accept", "application/json");
FormBody.Builder parameters = new FormBody.Builder();
parameters.add("grant_type", "password");
parameters.add("username", cliente);
parameters.add("password", clave);
builder.post(parameters.build());
Response response = client.newCall(builder.build()).execute();
if (response.isSuccessful()) {
json = response.body().string();
System.out.println("CONTENIDO:: " + json);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("Error: " + e);
}
return json;
}
我来到这里
答案 0 :(得分:1)
好像你正在做GET请求而不是POST请求。 当使用GET请求在postman上运行你的代码片时 - 它会返回相同的错误,所以我猜这就是问题所在。
按照此示例,如何使用OkHttp执行POST请求:
How to add parameters to api (http post) using okhttp library in Android