Я пытаюсь отправить запрос POST
, используя Plivo (VoIP-сервер), чтобы отправить SMS на мой мобильный телефон, но я просто получаю БЕСПЛАТНЫЙ ЗАПРОС (код запроса 400).Android - HttpsURLConnection - НЕОБХОДИМЫЙ ЗАПРОС
ошибка я получил "error": "invalid json data sent in raw POST"
Я не могу найти, где это не так.
Может кто-нибудь мне помочь?
final AsyncTask<String, Void, Boolean> request = new AsyncTask<String, Void, Boolean>() {
@Override
protected Boolean doInBackground(String... strings) {
Boolean retorno = true;
HttpsURLConnection request = null;
try {
request = (HttpsURLConnection) finalUrl.openConnection();
System.out.println("Define POST");
request.setRequestMethod("POST");
request.setUseCaches(false);
request.setDoOutput(true);
System.out.println("Define propriedades");
request.setRequestProperty("Content-Type", "application/json");
request.setRequestProperty("Accept", "application/json");
request.setRequestProperty("Accept-Charset", "UTF-8");
request.setRequestProperty("charset", "UTF-8");
System.out.println("Define autenticação");
String autenticacao = authID + ":" + authToken;
String basic = "Basic " + new String(Base64.encode(autenticacao.getBytes(), Base64.NO_WRAP));
request.setRequestProperty("Authorization", basic);
System.out.println("Define parâmetros");
JSONObject params = new JSONObject();
params.put("dst", numeroDestino);
params.put("src", numeroOrigem);
params.put("text", body);
System.out.println("Faz conexão e requisição");
request.connect();
OutputStreamWriter postParaEnvio = new OutputStreamWriter(request.getOutputStream());
postParaEnvio.write(URLEncoder.encode(params.toString(), "UTF-8"));
postParaEnvio.flush();
postParaEnvio.close();
int codigoStatus = request.getResponseCode();
for (Map.Entry<String, List<String>> header : request.getHeaderFields().entrySet()) {
System.out.println(header.getKey() + "=" + header.getValue());
}
if (codigoStatus == 202) {
System.out.println("OK");
} else {
System.out.println("Falha");
System.out.println(codigoStatus);
retorno = false;
}
} catch (IOException e) {
System.out.println("Falha Exception");
e.printStackTrace();
retorno = false;
} catch (JSONException e) {
e.printStackTrace();
retorno = false;
} finally {
request.disconnect();
}
return retorno;
}
@Override
protected void onPostExecute(Boolean result) {
indicadorDeAtividade.dismiss();
if(result) {
} else {
mostrarErro(0, R.string.erroEnviarCodigo);
}
}
}.execute();
Какого дополнительной информации Вы получаете с 400? –
Почему бы вам просто не использовать библиотеки, такие как volley, это действительно упрощает работу – has19
Plivo Sales Engineer здесь. Ответ 400 будет сопровождаться сообщением api_id и сообщением об ошибке, которое сообщит вам, почему это не удалось. Если у вас есть дополнительные вопросы или вы не можете понять это, обратитесь на [email protected] – CharlieC