Swift 3尝试这个:
class WebRequester: NSObject {
static let shared = WebRequester()
func request(vc:UIViewController, url: String, parameter:String?, callback:@escaping (_ result:NSDictionary?, _ error:NSError?) -> Void) {
let requestURL = url
print("..............................")
print("URL: ",requestURL)
print("Parameter: ",parameter ?? "nil")
print("..............................")
var request = URLRequest(url: URL(string:requestURL)!)
request.httpMethod = "POST"
if parameter != nil {
request.httpBody = parameter!.data(using: .utf8)
}
let session = URLSession.shared
let task = session.dataTask(with: request, completionHandler: {data, response, error in
UIApplication.shared.isNetworkActivityIndicatorVisible = false
DispatchQueue.main.async {
if error == nil {
do {
let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments)
print(json)
let dic = json as? NSDictionary
if dic != nil {
callback(json as? NSDictionary, nil)
}
else {
vc.alert(title: "Oops..", message: "Something went wrong please try again later")
}
}
catch {
print(error.localizedDescription)
callback(nil,error as NSError?)
}
}
else {
print(error?.localizedDescription ?? "")
callback(nil, error as NSError?)
}
}
})
task.resume()
UIApplication.shared.isNetworkActivityIndicatorVisible = true
}
}
目标C
WebRequester.h
#import <Foundation/Foundation.h>
@interface WebRequester : NSObject
+(id)shared;
-(void)request1:(NSString *)url parameter:(NSString *)params callback:(void(^)(NSDictionary *result, NSError *error))callback;
@end
WebRequester.m
#import "WebRequester.h"
@implementation WebRequester
+(id)shared {
static WebRequesterObjC *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
-(void)request1:(NSString *)url parameter:(NSString *)params callback:(void(^)(NSDictionary *result, NSError *error))callback {
NSString *requestUrl = url;
NSLog(@"====================");
NSLog(@"%@",requestUrl);
NSLog(@"%@",params);
NSLog(@"====================");
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[[NSURL alloc] initWithString:requestUrl]];
request.HTTPMethod = @"POST";
if (params != nil) {
request.HTTPBody = [params dataUsingEncoding:NSUTF8StringEncoding];
}
NSURLSession* session = [[NSURLSession alloc] init];
NSURLSessionDataTask* task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error == nil) {
if (data != nil) {
NSError * err;
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&err];
if (err == nil) {
callback(dic,nil);
}
else {
callback(nil,err);
}
}
}
else {
callback(nil,error);
}
}];
[task resume];
}
@end
调用如下
[WebRequesterObjC.shared request1:<#url#> parameter:params callback:^(NSDictionary *result, NSError *error) {
if (error == nil) {
NSLog(@"%@",result)
}
}];