需求
后臺要求
post
方式調(diào)接口屈尼,參數(shù)只有一個字符串比如@"value"
而非@{@"key":@"value"}
颜价。感覺總是有哪里和平時調(diào)接口不對,正常單獨字符串參數(shù)(非json類型)的琼锋,都采取的是get
方式浩聋,post一般傳遞的都是一個字典。后來找到方法咧栗,記錄下來逆甜,以備后用虱肄,有同樣疑惑的童鞋可以拿來用。
方法
/**
* 異步POST請求:以body方式,支持數(shù)組
*
* @param url 請求的url
* @param body body數(shù)據(jù)(NSString 轉為utf8編碼的NSData就行)
* @param success 成功回調(diào)
* @param failure 失敗回調(diào)
*/
- (void)PostWithUrlAndBody:(NSString *)url body:(NSData *)body success:(void(^)(NSDictionary *response))success failure:(void(^)(NSError *error))failure
{
NSString *requestUrl = url;
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:requestUrl parameters:nil error:nil];
request.timeoutInterval= 5.0;
[request setValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
[request setValue:[[NSUserDefaults standardUserDefaults]valueForKey:@"cookie"] forHTTPHeaderField:@"Cookie"];
// 設置body
[request setHTTPBody:body];
AFHTTPResponseSerializer *responseSerializer = [AFHTTPResponseSerializer serializer];
responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",
@"text/html",
@"text/json",
@"text/javascript",
@"text/plain",
nil];
manager.responseSerializer = responseSerializer;
[[manager dataTaskWithRequest:request completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (!error) {
success(responseObject);
} else {
failure(error);
}
}] resume];
}
調(diào)用
[self PostWithUrlAndBody:Nsite_ShareRevoke body:[[self.shareModel.dic objectForKey:@"id"] dataUsingEncoding:NSUTF8StringEncoding] success:^(NSDictionary *response) {
} failure:^(NSError *error) {
}];