1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
NSDictionary *headers = @{ @"content-type": @"multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", @"Content-Type": @"application/x-www-form-urlencoded", @"cache-control": @"no-cache", @"Postman-Token": @"e714247c-6bba-4e6a-9732-36a3672bcbba" } NSArray *parameters = @[ @{ @"name": @"apiKey", @"value": @"1" }, @{ @"name": @"deviceId", @"value": @"123456789" }, @{ @"name": @"uid", @"value": @"10000" } ] NSString *boundary = @"----WebKitFormBoundary7MA4YWxkTrZu0gW"
NSError *error NSMutableString *body = [NSMutableString string] for (NSDictionary *param in parameters) { [body appendFormat:@"--%@\r\n", boundary]; if (param[@"fileName"]) { [body appendFormat:@"Content-Disposition:form-data; name=\"%@\"; filename=\"%@\"\r\n", param[@"name"], param[@"fileName"]] [body appendFormat:@"Content-Type: %@\r\n\r\n", param[@"contentType"]] [body appendFormat:@"%@", [NSString stringWithContentsOfFile:param[@"fileName"] encoding:NSUTF8StringEncoding error:&error]] if (error) { NSLog(@"%@", error) } } else { [body appendFormat:@"Content-Disposition:form-data; name=\"%@\"\r\n\r\n", param[@"name"]] [body appendFormat:@"%@", param[@"value"]] } } [body appendFormat:@"\r\n--%@--\r\n", boundary]; NSData *postData = [body dataUsingEncoding:NSUTF8StringEncoding]
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://iot-ai.tuling123.com/app-author/unbind"] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10.0] [request setHTTPMethod:@"POST"] [request setAllHTTPHeaderFields:headers] [request setHTTPBody:postData]
NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { if (error) { NSLog(@"%@", error) } else { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response NSLog(@"%@", httpResponse) } }] [dataTask resume]
|