我想将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”响应,知道吗?
答案 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,它为您包装了整个过程。