最近公司要做AES加密,然后后臺要我們將參數(shù)加密后傳遞過去.后臺接收的是json格式數(shù)據(jù),并且要加一些header信息.
//實例化AFHTTPSessionManager
manager = [AFHTTPSessionManager manager];
//說明請求格式為json格式
manager.requestSerializer = [AFJSONRequestSerializer serializer];
//說明接收格式為json格式
manager.responseSerializer = [AFJSONResponseSerializer serializer];
//與后臺約定好可接收的Content-Type
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",nil];
//增加頭部
[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
將這些封裝到網(wǎng)絡工具類里
但是在使用時,由于加密后的參數(shù)是一段字符串,而我們說明了requestSerializer是json格式的,所以如果我們傳遞字符串過去會導致奔潰
//打斷點后奔潰的原因
[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];
主要是因為當我們說明了請求為json時,AFN內(nèi)部會幫我們處理轉(zhuǎn)為json格式的data,所以我們就要實現(xiàn)一個方法
[manager.requestSerializer setQueryStringSerializationWithBlock:^NSString * _Nonnull(NSURLRequest * _Nonnull request, id _Nonnull parameters, NSError * _Nullable __autoreleasing * _Nullable error) {
//在這里面對parameters進行處理
return 處理后的參數(shù);
}];
這就是在請求為json格式的時候傳遞字符串奔潰的方法