Я выполняю запрос HTTP Post для API EndPoint.Это грант авторизации пароля протокола OAuth2.
Я получаю обратно код 400, «неверный запрос». Чтобы продвинуться вперед, я хочу получить точный вызов, который я делаю в выражении Log.d .. Мой вопрос состоит в том, как я могу войти точно, что взапрос POST, который я делаю?Мне неясно, как это сделать .. Таким образом, я могу начать отладку ..
Я хотел бы получить что-то вроде
API Call Made = "https://api.allthingstalk.io/login/parameters"..
Сейчас это трудно отладить ..
// This method gets the AccessToken from the API EndPoint, this token is encoded in a class Token with all its parameters..
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public static Token getAccessToken () {
Token accessToken = null;
String urlParameters = "param1=a¶m2=b¶m3=c";
@SuppressLint({"NewApi", "LocalSuppress"}) byte[] postData = urlParameters.getBytes( StandardCharsets.UTF_8 );
try {
URL url = new URL("https://api.allthingstalk.io/login");
HttpURLConnection client = null;
client = (HttpURLConnection) url.openConnection();
client.setRequestMethod("POST");
client.setRequestProperty("grant_type", "password");
client.setRequestProperty("username", username);
client.setRequestProperty("password", password);
client.setRequestProperty("client_id", "com.example.gebruiker.internetofthingsattplatform");
client.setRequestProperty("Content-Type:", "application/x-www-form-urlencoded");
client.setUseCaches(false);
client.setDoOutput(true);
int status = client.getResponseCode();
String status_String = Integer.toString(status);
Log.d(TAG, status_String);
OutputStream outputStream = new BufferedOutputStream(client.getOutputStream());
outputStream.write(postData);
String postData_String = postData.toString();
Log.d(TAG, postData_String);
outputStream.flush();
outputStream.close();
if (client != null) // Make sure the connection is not null.
client.disconnect();
}
catch(MalformedURLException error) {
}
catch(SocketTimeoutException error) {
}
catch (IOException error) {
}
return accessToken;
}