Отправка многочастного POST-запроса OkHttp в службу голосовой почты Alexa и получение кода ответа 204. Как это решить? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь интегрировать Alexa с Android приложением. Я могу войти в систему и получить токен от AVS, и когда я пытаюсь отправить запрос вызова OkHttp Multipart POST в AVS с аудиофайлом в теле запроса, я получаю код ответа 204. Может ли кто-нибудь помочь мне в решении этой проблемы.

Спасибо:)

public void uploadFile(File audio, String accessToken) 

{

        OkHttpClient client = new OkHttpClient();

        try {

            byte[] streamToSend = new byte[(int) audio.length()];

            FileInputStream fis = new FileInputStream(audio);
            fis.read(streamToSend);
            fis.close();

            final MultipartBody requestBody = new MultipartBody.Builder()
                    .setType(MultipartBody.FORM)
                    .addFormDataPart("metadata","metadata",
                            RequestBody.create(MediaType.parse("application/json; charset=utf-8"), generateSpeechMetadata()))
                    .addFormDataPart("audio", "audiorecordtest.pcm",
                            RequestBody.create(MediaType.parse("application/octet-stream"), streamToSend))
                    .build();

            Request request = new Request.Builder()
                    .url("https://avs-alexa-eu.amazon.com/v20160207/events")
                    .addHeader("Authorization","Bearer "+accessToken)
                    .post(requestBody)
                    .build();
            client.newCall(request).enqueue(new Callback() {
                @Override
                public void onFailure(Call call, IOException e) {
                    call.cancel();
                    e.printStackTrace();
                    Log.e("STATUS", "Failed");
                }

                @Override
                public void onResponse(Call call, final Response response) throws IOException {
                    final String myResponse = response.body().string();
                    Log.e("STATUS CODE", String.valueOf(response.code()));
                    if (response.code() == HttpURLConnection.HTTP_NO_CONTENT){
                        Log.e("STATUS", " No Content");
                    }
                    else{
                        Log.e("STATUS Successfull!", response.body().toString());

                    }
                }
            });

        }catch (Exception ex) {
            ex.printStackTrace();
            // Handle the error
        }
    }
...