Отправить запрос на веб-сервис и важные методы делегата для разбора XML - PullRequest
0 голосов
/ 30 сентября 2011

Я хочу отправить запрос в сервис и в ответ получаю данные XML.

Итак, скажите, пожалуйста, как я могу отправить запрос на веб-сервер с проверкой подключения к Интернету, а также сообщить мне о важных методах делегата для разбора xml.

Ответы [ 2 ]

1 голос
/ 30 сентября 2011

Сначала вам также необходимо получить файл Reachability.h и файл Reachability.m

* Вы можете получить файл доступности здесь: - *

http://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

Также необходимо импортировать файл .h в ваш файл, в котором вы хотите проверить подключение к Интернету

Определите нижеуказанные переменные вВаш .h файл

NSMutableData *urlData;
NSMutableString *currentElementValue;

Также определите свойство NSMutableString

Ниже приведен код для urlConnection

    reachability = [Reachability reachabilityForInternetConnection];
    [reachability startNotifier];

    NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];

    if(remoteHostStatus == NotReachable)
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert Title"
                                                        message:@"Internet connection not currently available." 
                                                       delegate:nil
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"Ok", nil];
        [alert show];
        [alert release];

        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;

        return;
    }

    NSString *post = [NSString stringWithFormat:@""];

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding 
                          allowLossyConversion:NO]; 
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; 

    [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"Your Information Which You Want To Pass"]]];
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded"  forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:postData];
    urlData=[[NSMutableData alloc] init];
    [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];

Для парсинга XML ниже важных методов

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [urlData setLength:0];
}

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [urlData appendData:data];
}

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{

}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    xmlParser = [[NSXMLParser alloc] initWithData:urlData];

    [xmlParser setDelegate:self];

    [xmlParser parse];

    [urlData release];

}

#pragma mark -
#pragma mark XML Parsing Delegate Methods

- (void)parserDidStartDocument:(NSXMLParser *)parser
{

}

-(void)parserDidEndDocument:(NSXMLParser *)parser
{
     [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI 
 qualifiedName:(NSString *)qName
    attributes:(NSDictionary *)attributeDict
{

}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    NSCharacterSet *charsToTrim = [NSCharacterSet whitespaceAndNewlineCharacterSet];
    string = [string stringByTrimmingCharactersInSet:charsToTrim];

    if(!currentElementValue)
        currentElementValue = [[NSMutableString alloc] initWithString:string];
    else
        [currentElementValue appendString:string];
    //NSLog(@"Current Element Value :- '%@'",currentElementValue);
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{
    [currentElementValue release];
    currentElementValue = nil;
}

Вы также можете прервать синтаксический анализ по линии ниже

[xmlParser abortParsing];
0 голосов
/ 30 сентября 2011

этот вопрос уже задан, вы должны сначала попробовать хотя бы самостоятельно, вот вам полное решение: проверить подключение к Интернету

надеюсь, вам поможет !!

...