Почтальон запускает API, но выдает ошибку в моем коде с кодом состояния 500.IOS

Программируем под IOS
Ответить
Anonymous
 Почтальон запускает API, но выдает ошибку в моем коде с кодом состояния 500.

Сообщение Anonymous »

Мне нужно вызвать API одной публикации. Когда я попытался вызвать этот API в почтальоне, он увенчался успехом и работал отлично.
Но когда я попытался использовать этот API в своем коде, он выдал мне внутреннюю ошибку сервера (код ошибки 500). ).
Я попробовал другое решение, например, преобразовать мою модель запроса в строку json, а затем преобразовать в данные. И передать эти данные в API, но он все равно выдает мне код статуса 500.
Кто-нибудь может мне помочь?
Параметры запроса
{
"schedule_id": 1,
"date_of_survey": "2022-03-10",
"is_resolution_completed": 0,
"resolution_date": "",
"resolution_time": "",
"resolution_note": "",
"patient_id": 6,
"answers": [
{
"question_id":1,
"option_id":2,
"exceptiontxt":"",
"selectedAnswer": "7"
},
{
"question_id":2,
"option_id":5,
"exceptiontxt":"",
"selectedAnswer": "No"
},
{
"question_id":3,
"option_id":7,
"exceptiontxt":"",
"selectedAnswer": "No"
}
]
}

Модель класса моего запроса
struct SubmitSurveyRequest: Encodable {
var schedule_id: Int
var date_of_survey: String
var is_resolution_completed: Int
var resolution_date, resolution_time, resolution_note: String
var patient_id: Int
var answers: [SubmitSurveyRequestAnswer]
}

struct SubmitSurveyRequestAnswer: Encodable {
var question_id: Int
var option_id: Int
var exceptiontxt: String
var selectedAnswer: String

}

Моя функция вызова API
static func callAPIRaw(_ url: String,
params: E,
resultType: D.Type,
customHeader: HTTPHeaders? = headers,
httpMethod: HTTPMethod = .post,
_ completion: @escaping (Result) -> Void) {

let jsonEncoder = JSONEncoder()
jsonEncoder.outputFormatting = .prettyPrinted
var jsonData: Data = Data()

do {
jsonData = try jsonEncoder.encode(params)
} catch let error {
debugPrint("Error while encoding data (\(error.localizedDescription))")
}

var request = URLRequest(url: URL(string: url)!)
request.httpMethod = httpMethod.rawValue
request.headers = customHeader!
request.httpBody = jsonData

if Helper.checkInternetConnection() {
AF.session.configuration.timeoutIntervalForRequest = 300
AF.request(request).responseJSON { (response) in

switch response.result {
case .success(_):
if response.value != nil, response.value is Dictionary {
//debugPrint(url, params, response.value ?? "")
let decodedData: D?
do {

let status: Int = (response.value as? NSDictionary)?.value(forKey: "status") as? Int ?? 0
let message: String = (response.value as? NSDictionary)?.value(forKey: "msg") as? String ?? ""

//Status = 0 -> Fail, Status = 1 -> Success
if status == 0 {
if response.response!.statusCode == 500 {
completion(.failure(.otherError(msg: "internal_server_error".localized, code: response.response!.statusCode)))
} else if response.response!.statusCode == 401 {
Helper.logout()
} else {
completion(.failure(.otherError(msg: message, code: response.response!.statusCode)))
}
} else {
decodedData = try JSONDecoder().decode(resultType, from: response.data!)
completion(.success(decodedData!))
}

} catch let error {
debugPrint("Error while decoding data (\(error.localizedDescription))")
completion(.failure(.otherError(code: response.response!.statusCode)))
}

} else {
completion(.failure(.otherError(code: response.response!.statusCode)))
}
case .failure(_):
completion(.failure(.otherError(code: response.response?.statusCode ?? 500)))
}

}
} else {
completion(.failure(.networkError()))
}
}


Подробнее здесь: https://stackoverflow.com/questions/714 ... tatus-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»