HTTP POST-запрос вызывает исключение FileNotFound (но работает в Postman) - PullRequest
0 голосов
/ 23 марта 2019

Я новичок в Android и собираюсь написать свое первое приложение, связанное с REST-API.Мне удалось сделать запрос GET, но возникли проблемы с запросом POST.В Postman все работает - на Android мой AsyncTask генерирует исключение FileNotFound каждый раз, когда я пытаюсь выполнить запрос POST.

Следуя документации API, мне сначала нужно получить "accesstoken" с запросом HTTP GET (https://vereinsflieger.de/interface/rest/auth/accesstoken) Мне удалось это сделать. Используя токен доступа, я хочу войти в систему с запросом POST на https://vereinsflieger.de/interface/rest/auth/signin. Поскольку я не знаю, по какой причине, мой AsyncTask генерирует исключение FileNotFound, хотяфайл есть (работает без проблем в Postman). Есть ли проблема с кодом, который я использую, или с самим API?

Заранее спасибо!

Вот моя попытка:

public class HttpPostRequest extends AsyncTask<String, Void, String> {

    public static final String REQUEST_METHOD = "POST";
    public static final int READ_TIMEOUT = 15000;
    public static final int CONNECTION_TIMEOUT = 15000;
    public String result;
    public LoginActivity LoginActivity;

    public HttpPostRequest(LoginActivity a) { this.callingActivity = a; }

    @Override
    protected String doInBackground(String... params) {
        String stringURL = params[0];
        String logindata = params[1];
        String inputLine;
        try {
            //create URL object
            URL myUrl = new URL(stringURL);
            //create connection
            HttpsURLConnection connection = (HttpsURLConnection) myUrl.openConnection();

            //Set methods and timeouts
            connection.setRequestMethod(REQUEST_METHOD);
            connection.setReadTimeout(READ_TIMEOUT);
            connection.setConnectTimeout(CONNECTION_TIMEOUT);
            **connection.setDoOutput(true);
            OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
            wr.write(logindata);
            wr.flush();**

            Log.d("RESPONSE", "" + connection.getResponseCode());

            //Create a new InputStreamReader
            InputStreamReader streamReader = new InputStreamReader(connection.getInputStream());
            //Create a new buffered reader and String Builder
            BufferedReader reader = new BufferedReader(streamReader);
            **StringBuilder stringBuilder = new StringBuilder();** //Here is where the exception is thrown
            //Check if the line we are reading is not null
            while((inputLine = reader.readLine()) != null){
                stringBuilder.append(inputLine);
            }
            //Close our InputStream and Buffered reader
            reader.close();
            streamReader.close();
            //Set our result equal to our stringBuilder
            result = stringBuilder.toString();
        } catch(IOException e){
            e.printStackTrace();
            result = null;
        }
        return result;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        LoginActivity.onPostFinish(result);

    }
}

Я ожидал возврата строки, содержащей данные JSON, вместо этого я получил следующее исключение:

W/System.err: java.io.FileNotFoundException: https://vereinsflieger.de/interface/rest/auth/signin
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:250)
W/System.err:     at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getInputStream(DelegatingHttpsURLConnection.java:210)
W/System.err:     at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...