如何在进行服务呼叫时设置输入参数

时间:2014-03-09 22:15:11

标签: ios objective-c web-services

所以我正在研究一个关于如何对特定Web服务进行服务调用的小例子。我正在使用openweathermap.org网络服务。此服务的链接如下:

http://api.openweathermap.org/data/2.5/weather?q=London,uk

根据此链接,我可以按城市名称搜索天气。 所以我可以使用以下代码检索和NSLog JSON数据:

NSString *urlString = [NSString stringWithFormat:WXFORECAST, LOCATION];

    NSURL *url = [NSURL URLWithString:urlString];

    NSData *data = [NSData dataWithContentsOfURL:url];

    NSDictionary *json = [NSJSONSerialization
                          JSONObjectWithData:data options:kNilOptions error:nil];

    NSLog(@"%@", json);

这是最低限度并检索服务。 现在我希望得到我的特定城市,而不是伦敦。

如果没有,我想得到JUST THE WEATHER部分,而不是获得风速,以及所有其他垃圾。

以下是有关API的详细信息的链接:

http://openweathermap.org/API#weather

在该链接下,有一节说明了这一点:

限制输出: 要限制列出的城市数量,请设置cnt参数api.openweathermap.org/data/2.5/find?lat=57&lon=-2.15&cnt=3

我相信这可能是我正在寻找的,但我不确切知道如何使用它......

感谢所有帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

使用网址访问API,尝试在浏览器中使用此功能:

  

http://api.openweathermap.org/data/2.5/weather?q=New+York,us

看看我在“新”和“约克”之间有一个加号?这是为了确保URL有效,因为它们不允许使用空格。

您必须想办法在变量中获取所需的网址。在您的代码中,它使用存储在WXFORECAST中的格式字符串创建URL。所以,更新一下。

我没有时间阅读API的所有工作方式,但您可能无法请求它为您提供的信息更少。但没有什么可以阻止你只从你需要的东西。这就是JSON字典中的所有内容,如果您想获得温度,您的代码可能会像这样。

NSArray *list = json[@"list"];
NSDictionary *london = list[0];
NSDictionary *main = london[@"main"];
NSString *temp = main[@"temp"];