Должен ли почтовый запрос iOS выглядеть так же, как и остальные API? - PullRequest
0 голосов
/ 19 апреля 2019

Мне нужно отправить JSON-файл, который я собираю на iOS, своей бэкэнд-команде.JSON выглядит примерно так:

{
  "samples" : [
    {
      "acw" : 11,
      "e_reserved" : 0,
      "acc" : 28,
      "cheat_rate" : 16,
   }
  ]
}

Я делаю почтовый запрос к бэкенду по адресу:

http://make-post.com/api/post-activities

Бэкэнд ожидает JSON как:

 /api/post-activities/
 Request Body
 The request body should be a "application/json" encoded object, 
 containing the following items.

 Parameter      Description
 name   
 time_stamp 
 duration   

Мы не собираем все эти данные сами, но бэкэнд должен обрабатывать предоставленные нами данные и получать эту информацию.

Сначала я попытался поместить все эти данные в онлайн-хранилище и создать запрос в следующем виде:

 Request: {“pod_id”:“F11”,“type”:“Normal Activity”,“time_stamp”:“2019-04-17T22:29:35.147Z”,“url”:“https:\/\/s3.amazonaws.com\/mybucket-test\/myid@gmail.com\/2019-04-17\/d9335.json”}

Но когда я отправляю такой запрос, я получаю сообщение об ошибке Status Code 400.

Поэтому моей следующей идеей было передать им весь JSON, который я собрал.После этого они могут получить данные и просмотреть их в базе данных, хотя я получаю 500 ошибок.Означает ли это, что это на самом деле не работает?

1 Ответ

0 голосов
/ 20 апреля 2019

Вопрос для меня неясен: я узнал, что у вас есть некоторые данные, которые вы хотите передать бэкэнду, и бэкэнд отправляет 400, поскольку вы не выполняете его желание.

Предположим, вам нужно передать три переменные, пусть name, time_stamp, duration.

Все, что вам нужно сделать в Swift, использовать протокол Codable.

class postJSON : Codable {
   var name : String?
   var time_stamp :  String? // it may be Int64 according to backend what accept
   var duration : String? // it may be Int64 according to backend what accept
}

При отправке запроса просто выполните

let encodedData = try? JSONEncoder().encode(postJSON)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...