**Alamofire** 在 swift 5 中的响应失败
Failed response from **Alamofire** in swift 5
我正在使用 Alamofire class 进行 api 通话。 Api 在 Postman 中正常工作
请查看以下两个屏幕截图以供参考,
在第一张图片中,数据在原始 body
中传递
在第二张图片中,数据在 Headers 字段中传递
现在我正在使用此代码调用 API
//for params i'm sending below parameters
//["phoneNumber":"911234567890", "countryCode" : "91"]
let headers: HTTPHeaders = [
"deviceId" : deviceId,
"osVersion": osVersion,
"deviceType": deviceType,
"resolution":resolution,
"buildNumber":buildNumber]
AF.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers:headers).responseData { (response) in
switch response.result {
case .success(let data):
do {
//let asJSON = try JSONSerialization.jsonObject(with: data)
let asJSON = try JSONSerialization.jsonObject(with: data, options: [.fragmentsAllowed])
// success
print(asJSON)
let res : NSDictionary = (asJSON as AnyObject) as! NSDictionary
successBlock(res)
} catch { // error
print("decoding error:\n\(error)")
}
case .failure(let error):
print(error)
failure(error)
}
}
在上述代码的所有其他项目中,api 调用工作正常,但在这里我遇到以下错误
{ 代码 = 500;数据=“”; message = "无法将类型 'java.lang.String' 的值转换为所需类型 'java.util.Locale';嵌套异常为 java.lang.IllegalArgumentException:区域设置部分“en;q=1.0”包含无效字符”; …………………… NamedValueMethodArgumentResolver.java:125)\n\t... 97 more\n";状态="INTERNAL_SERVER_ERROR";时间戳="01-03-2022 07:55:20"; }
我尝试了几种方法,例如 URLEncoding.default、传递自定义 header、创建自定义原始请求并在内部传递 header,但没有任何效果,
有人有解决这个问题的方法吗?
提前致谢。
由于它抛出与本地相关的错误,我认为某些语言已定义并且它不接受 Accept-Language
header 的 *,请尝试在 [=22= 中发送“en” ] Accept-Language
.
检查语言的子标签:
http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry :
测试代码:
func callAPI() {
let params: Parameters = ["phoneNumber":"911234567890", "countryCode" : "91"]
let headers = [
"deviceId" : "jdhcbkerfjkr",
"osVersion": "3.2.3",
"deviceType": "ANDROID",
"resolution": "122x122",
"buildNumber": "3.2.1",
"Accept-Language": "en"]
AF.request("[Test-URL]",
method: .post,
parameters: params,
encoding: JSONEncoding.default,
headers: HTTPHeaders.init(headers)).response { response in
print(String(data: response.data!, encoding: .utf8)!)
}
}
我正在使用 Alamofire class 进行 api 通话。 Api 在 Postman 中正常工作
请查看以下两个屏幕截图以供参考,
//for params i'm sending below parameters
//["phoneNumber":"911234567890", "countryCode" : "91"]
let headers: HTTPHeaders = [
"deviceId" : deviceId,
"osVersion": osVersion,
"deviceType": deviceType,
"resolution":resolution,
"buildNumber":buildNumber]
AF.request(strURL, method: .post, parameters: params, encoding: JSONEncoding.default, headers:headers).responseData { (response) in
switch response.result {
case .success(let data):
do {
//let asJSON = try JSONSerialization.jsonObject(with: data)
let asJSON = try JSONSerialization.jsonObject(with: data, options: [.fragmentsAllowed])
// success
print(asJSON)
let res : NSDictionary = (asJSON as AnyObject) as! NSDictionary
successBlock(res)
} catch { // error
print("decoding error:\n\(error)")
}
case .failure(let error):
print(error)
failure(error)
}
}
在上述代码的所有其他项目中,api 调用工作正常,但在这里我遇到以下错误 { 代码 = 500;数据=“”; message = "无法将类型 'java.lang.String' 的值转换为所需类型 'java.util.Locale';嵌套异常为 java.lang.IllegalArgumentException:区域设置部分“en;q=1.0”包含无效字符”; …………………… NamedValueMethodArgumentResolver.java:125)\n\t... 97 more\n";状态="INTERNAL_SERVER_ERROR";时间戳="01-03-2022 07:55:20"; } 我尝试了几种方法,例如 URLEncoding.default、传递自定义 header、创建自定义原始请求并在内部传递 header,但没有任何效果, 有人有解决这个问题的方法吗? 提前致谢。
由于它抛出与本地相关的错误,我认为某些语言已定义并且它不接受 Accept-Language
header 的 *,请尝试在 [=22= 中发送“en” ] Accept-Language
.
检查语言的子标签: http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry :
测试代码:
func callAPI() {
let params: Parameters = ["phoneNumber":"911234567890", "countryCode" : "91"]
let headers = [
"deviceId" : "jdhcbkerfjkr",
"osVersion": "3.2.3",
"deviceType": "ANDROID",
"resolution": "122x122",
"buildNumber": "3.2.1",
"Accept-Language": "en"]
AF.request("[Test-URL]",
method: .post,
parameters: params,
encoding: JSONEncoding.default,
headers: HTTPHeaders.init(headers)).response { response in
print(String(data: response.data!, encoding: .utf8)!)
}
}