Я столкнулся с проблемой уже 3 недели, я использую довольно специфический API, которому нужен объект JSON в качестве тела в GET-запросе.И я думаю, что это главная проблема
Я пытался настроить свое кодирование с помощью ParameterEncoding благодаря документации Alamofire и всей помощи, предоставленной в переполнении стека, и все еще безуспешно.
Когда я делаю свой запросс почтальоном или с curl в моем терминале проблем нет, но когда я развиваюсь в swift с Alamofire, я получаю внутреннюю ошибку 500 или ничего не передается в моем ответе (когда я устанавливаю свой параметр в моей функции запроса с помощью ключевого слова encoding: JSONEncoding.default).
Вот пример curl:
curl -X GET https://blih.epitech.eu/user/repositories -H 'Content-Type: application / json' -d '{"user": account, "signature": password} '
Вот пример моего кода:
/// swift 5
let userString = #"{"user":"\#(account)","signature":"\#(signaturePassword)"}"#
let urlString = "https://blih.epitech.eu/repositories"
Alamofire.request(urlString, method: .get, parameters: [:], encoding: JSONStringArrayEncoding.init(string: userString), headers: nil)
.responseJSON { (response) in
debugPrint(response)
}
JSONStringArrayEncoding - это структура с моей пользовательской кодировкой:
struct JSONStringArrayEncoding: ParameterEncoding {
private let myString: String
init(string: String) {
self.myString = string
}
func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest {
var urlRequest = try urlRequest.asURLRequest()
let data = Data(myString.utf8)
if urlRequest.value(forHTTPHeaderField: "Content-Type") == nil {
urlRequest.setValue("application/json", forHTTPHeaderField: "Content-Type")
}
urlRequest.httpBody = data
return urlRequest
}
}
Я ожидаю получить массив json, когда запрос будет успешным:
{
"message": "Listing successful",
"repositories": {
"aaaa": {
"uuid": "e3a6bea1-c581-5fde-a3a8",
"url": "https://blih.epitech.eu/repository/aaa"
}
}
}
Но я получаю внутреннюю ошибку 500.
Заранее благодарю за помощь.