在 URL 中传递参数以在 IOS 中返回 json

Posted

技术标签:

【中文标题】在 URL 中传递参数以在 IOS 中返回 json【英文标题】:Passing param in URL to get json back in IOS 【发布时间】:2014-04-23 03:48:32 【问题描述】:

对不起,我真的是 iPhone 开发的初学者,我正在从 URL 中提取 json 数据,并在 UITableView 中完美地提取和加载数据,下面是代码

- (void)fetchFeed

    NSString *requestString = @"http://bookapi.bignerdranch.com/courses.json";
    NSURL *url = [NSURL URLWithString:requestString];
    NSURLRequest *req = [NSURLRequest requestWithURL:url];

    self.session = [NSURLSession sharedSession];

    NSURLSessionDataTask *dataTask =
    [self.session dataTaskWithRequest:req
                    completionHandler:
     ^(NSData *data, NSURLResponse *response, NSError *error) 


         NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:data
                                                                     options:0
                                                                       error:nil];

         self.courses = jsonObject[@"courses"];

         dispatch_async(dispatch_get_main_queue(), ^
             [self.tableView reloadData];
         );

     ];

    [dataTask resume];
 

现在我想添加导师的过滤器,谁能告诉我怎么做。

谢谢

【问题讨论】:

【参考方案1】:

获取

GET 请求只是将查询字符串附加到 API url 的问题,例如:

NSString *format = [NSString stringWithFormat:@"http://www.yourapiurl.com?id=%@","123";
NSURL *url = [NSURL URLWithString:format];
NSLog(@"%@",url);
//Creating the data object that will hold the content of the URL
NSData *jsonData = [NSData dataWithContentsOfURL:url];
NSError *error = nil;
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];

发布

-(NSData *)post:(NSString *)postParams  
    //Build the Request
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.yourapiurl.com"]];
    [request setHTTPMethod:@"POST"];
    [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[postParams length]] forHTTPHeaderField:@"Content-length"];
    [request setHTTPBody:[postParams dataUsingEncoding:NSUTF8StringEncoding]];

    //Send the Request
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];

    //Get the Result of Request
    NSString *response = [[NSString alloc] initWithBytes:[returnData bytes] length:[returnData length] encoding:NSUTF8StringEncoding];

    return returnData;

用法:

NSString *postString = [NSString stringWithFormat:@"prop1=%@&prop2=%@&prop3=%@",
                                          "value1","value2","value3"];
NSData *JsonData = [self post :postString];
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:JsonData options:NSJSONReadingMutableContainers error:nil];
//then parse the JSON

【讨论】:

我想我没有正确解释我的问题,实际上在服务器上我有将讲师作为参数并在此基础上返回数据的方法。所以我的问题是我不知道如何传递参数在服务器上的 URL 上获取我的过滤结果。我正在使用 web api。 您是否在询问如何向您的 API 发出 POST/GET 请求? @BraveBoy 是的,对于 Get 请求,我有 1 个需要 id 作为参数的方法,另一个是 POST 方法,它需要请求对象作为参数,并保存 3 个属性。但我不知道如何传递参数,你的 he;p 将非常受欢迎。

以上是关于在 URL 中传递参数以在 IOS 中返回 json的主要内容,如果未能解决你的问题,请参考以下文章

如何从 iOS 传递信息以在启动时做出本机反应?

iOS - 从一个视图控制器传递数据以在另一个视图控制器的 init 方法中使用

如何将文件名作为 C++ 编译参数传递以在介子构建中使用?

获取传递给函数的参数,使用线程返回

如何在 fetch 中传递 POST 参数以在 React Native 中将图像上传到服务器?

如何将存储的值作为列号参数传递以在 awk 中进行编辑?