如何发布API值并返回数据?

时间:2018-11-19 03:40:34

标签: objective-c json post

我想将POST API发送到服务器并获取返回值,该怎么办?

 NSURLSessionConfiguration *defaultSessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
        NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration:defaultSessionConfiguration];

        // Setup the request with URL
        NSString *strurl3=[NSString stringWithFormat: @"%@/product/product_id",APIDomainURL];

        NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] init];
                [urlRequest setURL:[NSURL URLWithString:strurl3]];
                [urlRequest setHTTPMethod:@"POST"];
                [urlRequest addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];


        // Convert POST string parameters to data using UTF8 Encoding
        NSDictionary *postDict3 = @{@"product_id":_productID,@"code":[[NSUserDefaults standardUserDefaults] stringForKey:@"selectedCountry"]};
        NSData *postData = [NSJSONSerialization dataWithJSONObject:postDict3 options:0 error:nil];
        [urlRequest setHTTPBody:postData];


        // Create dataTask
        NSURLSessionDataTask *dataTask = [defaultSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data3, NSURLResponse *response, NSError *error) {
            // Handle your response here
             NSLog(@"Get value here:%@", response);
        }];

        // Fire the request
        [dataTask resume];

请帮助。谢谢。

如上编辑我的代码,但是我仍然收到“ null”响应,知道吗?

2 个答案:

答案 0 :(得分:0)

最后,我的回答如下:-

NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/product/product_id",APIDomainURL]]];

        NSString *userUpdate =[NSString stringWithFormat:@"product_id=%@&code=%@",_productID,[[NSUserDefaults standardUserDefaults] stringForKey:@"selectedCountry"], nil];

        [urlRequest setHTTPMethod:@"POST"];

        NSData *data1 = [userUpdate dataUsingEncoding:NSUTF8StringEncoding];
        [urlRequest setHTTPBody:data1];

        NSURLSession *session = [NSURLSession sharedSession];
        NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData *data2, NSURLResponse *response, NSError *error) {
            NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
            if(httpResponse.statusCode == 200)
            {
                NSError *parseError = nil;
                productHistoryAry = [NSJSONSerialization JSONObjectWithData:data2 options:0 error:&parseError];
                NSLog(@"Get value here:%@", productHistoryAry);       
            }
            else
            {
                 // Error           
            }
        }];
        [dataTask resume];

答案 1 :(得分:-1)

您仅创建了一个url请求,还不够。您应该创建URLConnection(适用于早期的ios版本)或URLSession来发布它。但是我建议您使用AFNetworking,它为您包装了整个过程。