私は私の携帯電話にSMSを送信するためにPlivo(VoIPサーバ)を使用してPOST
リクエストを送信しようとしていますが、私はちょうどBAD REQUEST(リクエストコード400)を受け取ります。アンドロイド - のHttpsURLConnection - BAD REQUEST
私が受信したエラーは、それが間違っているところ、私は見つけることができません"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でどのような追加情報を得ていますか? –
なぜ単にボレーのような図書館を使うのではなく、本当に物事をはるかに簡単にする – has19
Plivoセールスエンジニアはこちら。 400のレスポンスにはapi_idとそれがなぜ成功しなかったのかを示すエラーメッセージが伴います。さらなる質問がある、またはそれがまだ分からない場合は、support @ plivo.comまでお問い合わせください。 – CharlieC