API остальных работает в Почтальоне, но не в приложении Android - PullRequest
0 голосов
/ 15 января 2020

API остальных работают в Почтальоне с chrome, но те же запросы при попытке сделать из приложения android работают только в следующем сценарии: В почтальоне выполнить запрос (скажем, запрос POST A), запустить android приложение Я получаю ожидаемый результат для POST REQUEST A. Для другого запроса POST (скажем, POST REQUEST B) снова мне нужно выполнить POST REQUEST B в POSTMAN, а затем выполнить действие в моем приложении. Если не выполнить POST REQUEST B, ответ POST REQUEST A получен в моей заявке.

Также после определенного периода времени, если я просто запускаю приложение android, которое делает запросы POST, я получаю следующую ошибку: {"message": "Отсутствует токен аутентификации"}

Приведенное выше сообщение об ошибке появляется даже при попытке доступа по ссылке, предоставленной в объекте url, из URL-адреса браузера url = new URL ("LINK");

В чем могут быть причины вышеуказанных проблем?

Code snippet:

    URL url = new URL(LINK); 
    con = (HttpURLConnection) url.openConnection();
    InputStream errorStream = con.getErrorStream();
    if (errorStream != null) {
         BufferedReader br1 = new BufferedReader(new 
         InputStreamReader(errorStream));
         String errorInConnection = readStream(br1);
         Log.d(TAG, "errorInConnection:"+errorInConnection);
         }
    con.setRequestProperty("Authorization", "no auth");
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json");
    con.setRequestProperty("Accept", "application/json");
    con.setDoOutput(true);
    con.setChunkedStreamingMode(0);

In POSTMAN:

        {
             "data": {
                "currLat":some cordinate,
                "currLong":some coordinate
              },
              "datatype": "geodata"
        }

Header:
Key - Content-Type
Value - application/json

1 Ответ

0 голосов
/ 21 января 2020

Исправления для моего ответа ниже приветствуются, также я хотел бы отметить, что я новичок в android, а также обработки REST API

Причина, почему я был не получен ответ, потому что я не выкладывал данные правильно. Как уже упоминалось, в моем случае я предполагал опубликовать JSON данных. При публикации данных JSON даже небольшие ошибки, такие как отправка "широта": 12.321 для "широта": "12.321" , не должны выполняться. Синтаксис должен соблюдаться. Если вы публикуете неправильные данные, вы получите следующий тип ошибки:

{"errorMessage":"java.lang.NullPointerException","errorType":"java.lang.NullPointerException","stackTrace":["java.io.Writer.write(Writer.java:157)","com.bosch.in.dataloggerlambda.StramDataProcessosLambda.handleRequest(StramDataProcessosLambda.java:102)","sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)","sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)","sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)","java.lang.reflect.Method.invoke(Method.java:498)"]}

Если ответы получены в почтальоне, то мы получим ответы от HttpUrlConnection, сделанные из android studio.

Так как URL был для поста и для поста, данные должны присутствовать, чтобы получить ответ, когда я вставил ссылку в браузер, она выдала мне следующую ошибку:

error: {"message":"Missing Authentication Token"}

То же самое наблюдался и из студии android. Может быть много других случаев, в которых вы можете получить такую ​​же ошибку, я не уверен в них. Но убедитесь, что даже из android studio при попытке сделать POST-запрос вам необходимо отправить данные.

...