Как отправить запрос на получение в iOS? - PullRequest
26 голосов
/ 02 июня 2011

Я создаю библиотеку для получения ответа от определенного URL с указанными данными и типом метода. Для этого я делаю запрос с URL. Но когда я устанавливаю его тип метода, он показывает исключение нераспознанной селекторной отправки в [NSURLRequest setHTTPMethod:] Я устанавливаю это как

[requestObject setHTTPMethod:@"GET"];

Скажите, в чем может быть проблема. Также предоставьте мне код, если у вас есть.

Ответы [ 4 ]

82 голосов
/ 02 июня 2011
NSMutableURLRequest *request = 
[NSMutableURLRequest requestWithURL:[NSURL 
            URLWithString:serverAddress] 
            cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData
                                                   timeoutInterval:10
 ];

[request setHTTPMethod: @"GET"];

NSError *requestError = nil;
NSURLResponse *urlResponse = nil;


NSData *response1 =
        [NSURLConnection sendSynchronousRequest:request
                         returningResponse:&urlResponse error:&requestError];
12 голосов
/ 02 июня 2011

<code>NSString *getString = [NSString stringWithFormat:@"parameter=%@",yourvalue];
NSData *getData = [getString dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];<br>
NSString *getLength = [NSString stringWithFormat:@"%d", [getData length]];<br>
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];<br>
[request setURL:[NSURL URLWithString:@"https:yoururl"]];<br>
[request setHTTPMethod:@"GET"];<br>
[request setValue:postLength forHTTPHeaderField:@"Content-Length"];<br>
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];<br>
[request setHTTPBody:getData];<br>
self.urlConnection = [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];<br>
NSAssert(self.urlConnection != nil, @"Failure to create URL connection.");<br>
// show in the status bar that network activity is starting
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
2 голосов
/ 15 декабря 2016

Просто позвоните и используйте:

(void)jsonFetch{

    NSURL *url = [NSURL URLWithString:@"http://itunes.apple.com/us/rss/topaudiobooks/limit=10/json"];

    NSURLSession *session = [NSURLSession sharedSession];

    NSURLSessionDataTask *data = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {

        NSError *erro = nil;

        if (data!=nil) {

            NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&erro ];

            if (json.count > 0) {

                for(int i = 0; i<10 ; i++){

                    [arr addObject:[[[json[@"feed"][@"entry"] objectAtIndex:i]valueForKeyPath:@"im:image"] objectAtIndex:0][@"label"]];

                }

            }
        }
        dispatch_sync(dispatch_get_main_queue(),^{

            [table reloadData];
        });
    }];

    [data resume];
}
2 голосов
/ 02 июня 2011

Убедитесь, что ваш requestObject имеет тип NSMutableURLRequest.

...