需求
后臺(tái)要求
post方式調(diào)接口,參數(shù)只有一個(gè)字符串比如@"value"而非@{@"key":@"value"}。感覺(jué)總是有哪里和平時(shí)調(diào)接口不對(duì),正常單獨(dú)字符串參數(shù)(非json類(lèi)型)的,都采取的是get方式,post一般傳遞的都是一個(gè)字典。后來(lái)找到方法,記錄下來(lái),以備后用,有同樣疑惑的童鞋可以拿來(lái)用。
方法
/**
* 異步POST請(qǐng)求:以body方式,支持?jǐn)?shù)組
*
* @param url 請(qǐng)求的url
* @param body body數(shù)據(jù)(NSString 轉(zhuǎn)為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"];
// 設(shè)置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) {
}];