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,所以這里就沒有添加