gpt4 book ai didi

php - Alamofire打印“由于错误,无法序列化JSON:”

转载 作者:行者123 更新时间:2023-12-01 18:05:15 25 4
gpt4 key购买 nike

我正在尝试使用一些参数发出发布请求,但是在发出请求时,Alamofire会显示以下错误:

JSON由于错误而无法序列化:
数据格式错误,因此无法读取。

以下是我要运行的代码:

var parameters: [String: Any] = [:]
parameters[UserParameters.kUserId.rawValue] = self.userInfoForMe.user_id
parameters[UserParameters.kGender.rawValue] = self.userInfoForMe.gender
parameters[UserParameters.kfull_name.rawValue] = self.userInfoForMe.full_name
parameters[UserParameters.kDOB.rawValue] = self.userInfoForMe.dob

print("parameters:\(parameters)")
let userInfoDataHandler:UserInfoDataHandler = UserInfoDataHandler()
var DataJSON : JSON = JSON.null
userInfoDataHandler.postData(parameters: parameters){
responseObject, error in
if responseObject != nil{
DataJSON = JSON(responseObject!)
print(DataJSON)
}
else{
self.removeLoader(showNewController: false)
self.showAlertWithMessage(msg: ErrorContants.somethingWentWrongError)
}
}

这是我的UserDataInfoHandler:
class UserInfoDataHandler: BaseService {
init(){
super.init(controller: Controllers.mobile_pa, apiName: ApiNames.save_user_info)
}

}

以下是我从基本服务调用的代码:
fileprivate func fetchData(method:String, endpoint:String,parameters: [String: Any],completionHandler: @escaping (NSDictionary?, Error?) -> ()){

//need to show loader here..

var request: DataRequest? = nil
let requestURL : String = URLConstants.baseURL + self.controller + "/" + self.apiName
switch method {
case RequestMethod.GET.rawValue:
request = Alamofire.request(requestURL, method: HTTPMethod.get, parameters: parameters)

case RequestMethod.POST.rawValue:
request = Alamofire.request(requestURL, method: HTTPMethod.post, parameters: parameters)

default:
print(ErrorContants.WentThroughSwitchCaseOf + "Base Service");
}

request?.responseJSON(completionHandler: { (response) in
//this block never gets executed as it throws error that JSON is not serialized.
self.checkForResponseAndError(response: response, completionHandler: completionHandler)
})
}

打印完我的参数后,输出如下:
parameters:[ "full_name": "fatin", "user_id": "42", "dob": "06-12-1994", "gender": "1"]

更新:我已经尝试使用相同的代码处理其他发布请求和参数,它们工作正常。因此,我知道发送的参数存在问题,但仍然无法弄清楚出了什么问题。

最佳答案

经过数小时的思考和与团队讨论,发现我的代码没有任何错误。问题是,服务器端进行了一些验证,因为响应中得到了PHP错误,而alamofire无法处理(,因为alamofire仅可以处理JSON响应)。请查看随附的屏幕截图,了解Postman中的错误。 enter image description here
因此,实际的问题是来自服务器的响应,这是发布请求中的 PHP错误。现在,我得到了适当的答复,因为现在没有问题了。
希望有人会对此有所帮助。

关于php - Alamofire打印“由于错误,无法序列化JSON:”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47589492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com