AFNetworking POST 請求參數保存在Body 中的解決辦法


1)首先區分一下,get和post的區別

get方法,會將參數放到url中,屬於透傳,相對於post放到content中的安全性低

2)使用AFNetworking,默認HTTPMethodsEncodingParametersInURI里面包含的只有`GET`, `HEAD`, 和 `DELETE` .不知道情況的情況下使用POST方法的話,會將用戶傳遞的參數放到Body里面,導致服務端JSP通過request.getParameters()獲取不到參數。

3)通過xcode定位代碼,發現在requestBySerializingRequest中會直接跳過

 if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
        return [super requestBySerializingRequest:request withParameters:parameters error:error];
   }

直接走下面的步驟,然后將請求參數添加到body里面:

[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];

4)解決辦法:

HTTPMethodsEncodingParametersInURI 包含POST方法

requestManager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithArray:@[@"POST", @"GET", @"HEAD"]];//一般的服務器不推薦使用put和delete,所以這里就沒有添加


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM