Боюсь, я не могу поделиться URL-адресом API. Но проверял на Почтальон, работает. Это запрос СООБЩЕНИЕ, и следующий ответ:
{
"user_key": "b0aebdedb15e2beaaf479ca3c4f8227e8e970681"
}
Скриншот почтальона:
В коде это запрос, который я делаю с помощью Alamofire:
Alamofire.request("some url", method: .post, parameters: params, encoding: URLEncoding.httpBody, headers: ["Content-Type":"application/json"])
.responseObject { (response: DataResponse<User>) in
let userResponse = response.result.value
print("")
}
Но userResponse равен нулю. Это объект Пользователь:
import ObjectMapper
class User: Mappable {
var authToken: String?
required init?(map: Map) {
}
func mapping(map: Map) {
self.authToken <- map["user_key"]
}
}
Я использую здесь ObjectMapper.
Предполагая, что это не объект JSON
, я попытался обработать его как String
:
Alamofire.request("some url", method: .post, parameters: params, encoding: URLEncoding.httpBody, headers: ["Content-Type":"application/json"])
.responseString { (response: DataResponse<String>) in
let dataUser = response.data as! Any
let dataUser1 = response.data as! AnyObject
let error = response.error
let code = response.response?.statusCode
print(response.value)
print(response.result.value)
}
Еще ничего. Я не могу получить значение. Однако код состояния оказывается 400 (неверный запрос).
Что именно? JSON
объект или String
? Как это исправить ?
Ошибка 400 обычно означает, что сервер отклоняет, не принимает ваш запрос, поэтому данные пользователя не возвращаются, поэтому userResponse равен нулю.
@Kamran: Как проверить кодировку в Postman?
@IgorN: Да. Я уже упоминал об этом.
В разделе «Тело» справа от параметров тела есть раскрывающийся список.
@Kamran: Но это для типа содержимого, а не для кодирования.
проверьте свои параметры и попробуйте заменить этот URLEncoding.httpBody
на JSONEncoding.default
@ a.masri: Вот и все. Спасибо. Вы можете ответить на вопрос для справки.
@Nitish добавь мой ответ, удачи
Просто попробуйте заменить
этот URLEncoding.httpBody
в JSONEncoding.default
JSONEncoding.default
Использует JSONSerialization
для создания JSON-представления объекта параметров, который задается как тело запроса. Поле заголовка HTTP Content-Type
закодированного запроса установлено на application/json
.
Запрос двойной проверки
method
,encoding
,endPoint
иheaders
, отправленный с запросомAlamofire
и вPostman
. Если бэкенд-парень находится в пределах досягаемости, неплохо было бы его немножко разозлить :)