#python #swift #flask #multipartform-data #alamofire5
#python #swift #flask #составная форма-данные #alamofire5
Вопрос:
Я пытался загрузить одно изображение через составные данные Alamofire 5, API отлично работает как на Postman, так и на стороне Android, но он не работает на стороне iOS. API разработан на Python flask. Изображение взято с камеры и загружено с помощью JPEGCompression image.
Ниже приведен мой код:
func postMultipartData(imageData: Data, completion:@escaping (Result<AccuracyModel?, ErrorResponse>) -> Void) {
let url = APIConstant.ImageAccuracyBaseUrl.BASEURL
let mimeType = "image/jpeg"
let headers: HTTPHeaders = [
"Content-Type": ContentType.multipart.rawValue
]
AF.upload(multipartFormData: { (multipartFormData) in
multipartFormData.append(imageData, withName: "file", fileName: "file123.jpg", mimeType: mimeType)
print(multipartFormData.boundary)
}, to: url, usingThreshold: UInt64.init(),
method: .post,
headers: headers).response { response in
switch response.result {
case .success(_):
if response.response?.statusCode == 200 || response.response?.statusCode == 201 {
do {
if let data = response.data {
let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
print(json ?? "")
let decodedData = try! JSONDecoder().decode(AccuracyModel.self, from: data)
DispatchQueue.main.async {
completion(.success(decodedData))
}
} else {
print(response)
}
} catch {
completion(Result.failure(self.generateErroModel()!))
}
} else if response.response?.statusCode == 500 {
completion(Result.failure(self.generateErroModel()!))
} else {
fallthrough
}
break
case .failure(_):
completion(Result.failure(self.generateErroModel()!))
}
}
}
Для целей тестирования api использует порт 5000, может ли это быть проблемой?
Параметры не требуются, поэтому их отправка невозможна.
Я также пытался использовать NSURLSession, но безуспешно.
Для кода Flask я сослался на следующую ссылку:https://pytorch.org/tutorials/intermediate/flask_rest_api_tutorial.html
Заранее спасибо.
Комментарии:
1. Вы получили какой-либо ответ?
2. да, получаю ответ как: сбой (Alamofire. Ошибка AFError.sessionTaskFailed (ошибка: ошибка домена = NSURLErrorDomain Code =-1001 «Время ожидания запроса истекло». userInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError= 0x28028c510 {Ошибка домена= kCFErrorDomainCFNetwork Code=-1001 «(null)» userInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <1A125234-A3F4-4BAF-B687-E81516363016>.<9>, _NSURLErrorRelatedURLSessionTaskErrorKey=( «LocalDataTask <1A125234-A3F4-4BAF-B687-E81516363016>.<9>»