Проблема с API openweathermap в мобильном приложении

Я использую API openweathermap в своем приложении для iOS.

Ниже мой URL-адрес, по которому я звоню, чтобы узнать, есть ли информация.

http://api.openweathermap.org/data/2.5/weather?lat=21.282778&lon=-157.829444&APPID=MYAPPID&lang=en-US

Открыв этот URL-адрес в браузере, я получил правильный ответ.

Но когда я вызываю Web-сервис из своего iOS-приложения, я не получаю ответа. Я получаю ошибку ниже:

{
    cod = 401;
    message = "Invalid API key. Please see http://openweathermap.org/faq#error401 for more info.";
}

Я создал ключ API из этого URL: Создать ключ API в Open Wheather


person Vishal Sharma    schedule 08.03.2016    source источник
comment
Как этот api.openweathermap.org/data 2,5 /   -  person Muhammad Adnan    schedule 08.03.2016
comment
MYAPPID - это просто сдержанность. Я выставляю реальную ценность.   -  person Vishal Sharma    schedule 08.03.2016
comment
проверьте мой URL-адрес в приведенном выше комментарии, я только что заменил действительный идентификатор приложения с сайта openweathermap   -  person Muhammad Adnan    schedule 08.03.2016
comment
Я также пробовал то же самое с предоставленным вами URL-адресом. Но результат тот же. В браузере он показывает результат, но показывает ту же ошибку в приложении iOS.   -  person Vishal Sharma    schedule 08.03.2016
comment
опубликуйте свой код, как вы отправляете запрос на сервер.   -  person Muhammad Adnan    schedule 08.03.2016
comment
Он уже показывает код ошибки. Поэтому я не думаю, что есть проблема с отправкой запроса на сервер.   -  person Vishal Sharma    schedule 08.03.2016
comment
код ошибки показывает, что вы устанавливаете неправильный способ, который сервер не может получить. Ниже приведен рабочий код, поместите его в метод ViewDidLoad и проверьте ответ   -  person Muhammad Adnan    schedule 09.03.2016


Ответы (1)


NSURL *URL = [NSURL URLWithString:@"http://api.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a&lang=en-US"];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];

    NSURLSession *session = [NSURLSession sharedSession];
    NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                            completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
    {
        NSError* errorObj;
        NSDictionary* json = [NSJSONSerialization
                              JSONObjectWithData:data
                              options:kNilOptions
                              error:&errorObj];

        NSLog(@" response is %@",json);

    }];

    [task resume];

Ваш идентификатор приложения должен быть действительным. Я жестко запрограммировал URL-адрес для демонстрации.

person Muhammad Adnan    schedule 08.03.2016
comment
Спасибо. Собственно проблема с моей просьбой. Я отправлял q = London, uk & appid = 44db6a862fba0b067b1930da0d769e98 & lang = en-US Indo в качестве параметров. После отправки полного URL-адреса в запросе я смог получить данные. - person Vishal Sharma; 09.03.2016
comment
@Maria - Вы можете отправить мне полный запрос, я столкнулся с той же проблемой. - person nOOb iOS; 15.03.2016
comment
@nOObiOS отправьте отдельный вопрос и свой текущий код. - person Muhammad Adnan; 16.03.2016