状态码405问题.Alamofire POST请求...

时间:2017-07-29 05:50:26

标签: ios swift post alamofire http-status-code-405

我正在尝试制作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.有人可以帮忙吗?提前谢谢......

4 个答案:

答案 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)

尝试替换:

<{> responseStringresponseJSONURLEncoding(destination: .queryString)URLEncoding.default

LIKE:

Alamofire.request(strURL, method: .post, parameters: params, encoding: URLEncoding.default, headers: headers).responseJSON { (responseObject) -> Void in 

//Do something

}