我正在尝试制作Alamofire POST请求。这就是我提出请求的方式..
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding(destination: .queryString), headers : headers)
.responseString { response in
print(response.result)
}
虽然我得到了结果' SUCCESS',但状态代码始终显示为405,而它应该是200.在'编码'请求的一部分,我已尝试过JSONEncoding.default,JSONEncoding.prettyPrinted,URLEncoding.httpbody等所有内容...但状态代码仍然是405.有人可以帮忙吗?提前谢谢......
答案 0 :(得分:1)
我认为问题出在您的服务器上,因为此状态代码仅在服务器禁用api时出现
HTTP 405 Method Not Allowed响应状态代码表示 请求方法由服务器知道,但已被禁用 不能使用。绝对必须采用两种强制方法GET和HEAD 已禁用,不应返回此错误代码。
请联系您的服务器(后端开发人员),确保您的网址正确
答案 1 :(得分:0)
这是解决这个问题的方法......必须做出一些改变......
给出的标题是:let headers = [" Content-Type" :" application / json"]。但必须让header = [" Content-Type":" application / x-www-form-urlencoded"]。 编码也应该作为URLEncoding.httpBody给出。
进行这些更改使其正常工作......
答案 2 :(得分:0)
我遇到了同样的问题。 API端点可与Android Retrofit完美配合,并已与PostMan进行了测试。标头的Content-Type也是application / json。 这确实是一个奇怪的错误。我已经使用Fiddler来检查响应。 错误消息是
请求的资源不支持http方法'T'/'ST'。
我使用GET / POST方法,但是它说我使用的是T / ST,而不是GET / POST
我从Alamofire的问题中找到了答案。
当我调用不带参数的API端点时,我使用空白字典作为参数。
Alamofire.request(“ URL”, 方法:.get, 参数:[:], 编码:JSONEncoding.default).responseString(completionHandler:completeHandler)
我将其更改为零
Alamofire.request(“ URL”, 方法:.get, 参数:无, 编码:JSONEncoding.default).responseString(completionHandler:completeHandler)
之后,它运行良好。 希望对您有帮助。干杯!
答案 3 :(得分:-1)
尝试替换:
<{>responseString
与responseJSON
并URLEncoding(destination: .queryString)
与URLEncoding.default
LIKE:
Alamofire.request(strURL, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in
//Do something
}