我想重新創建這個郵遞員設置張貼在Alamofire。這是我第一次看到一個需要參數和一個Raw Json體的API。郵差身體原始請求快速Alamofire
對於上述要求,我已完成收集和格式化數據(使用SwiftyJSON的Json或詞典[String : Any]
/Parameters
)。
雖然我確實看到了類似的問題,這樣的:Postman request to Alamofire request但它並沒有一個有效的答案。假設我對從各種API發佈/獲取/ etc數據非常有經驗,但我不知道如何在上面的照片中傳遞原始數據。請在代碼中查看我的評論。
這裏就是我和我的功能做了這個請求:
/** Apply to job with Shift.
* This service function creates a json data for applying.
*/
func someFuncService(_ job: Job, daySchedules: [(Int, String, Schedule)], withBlock completion: @escaping JobServiceCommonCallBack) {
AuthService.someFunc { (currentCustomer, accessToken) in
guard let lalala = currentCustomer?.id,
let accessT = accessToken else {
completion(LalaErrors.currentCustomerError)
return
}
guard let jobId = job.id else {
completion(LalaErrors.modelError)
return
}
let coreService = LalaCoreService()
let applicantEndpoint = LalaCoreService.Endpoint.Applicant
let parameters = [
"param1" : customerId,
"param2" : jobId,
"accessToken" : accessToken,
"shift" : self.generateDataFromDaySchedules(daySchedules) // this returns [String : Any], can be printed into Json using JSON(x)
] as Parameters
GPLog(classSender: self, log: "FINAL PARAMETER: \(parameters)")
coreService.request = Alamofire.request(
applicantEndpoint,
method: .post,
parameters: parameters,
encoding: URLEncoding.default, // I already have tried .httpbody too.
headers: nil
)
coreService.request {
(response, result) in
if let error = result?.error {
if response!.statusCode == 500 {
completion(GPKitError.newError(description: "Failed to apply. Please contact the admin."))
return
}
completion(error)
return
}
// Success
completion(nil)
return
}
}
}
編輯:所以現在的問題是,我在做什麼錯在這裏? API返回狀態碼500內部服務器錯誤。
什麼是你的郵差設置了單頭?您在Alamofire請求中將標題設置爲「nil」。 –
我郵遞員的郵件頭是'Content-Type'' application/x-www-form-urlencoded',這並不重要。試圖消除郵遞員和請求的作品。我的所有請求都不需要標題。 – Glenn
如果使用該標題解決了問題,我仍然會在Alamofire中嘗試一下。將'encoding'設置爲'URLEncoding.httpBody'並使用指定的頭文件。順便說一句'參數'只是'[String:Any]'的一個類型? –