Веб-сервис n sqlite - PullRequest
       1

Веб-сервис n sqlite

0 голосов
/ 22 октября 2010

У меня есть веб-сервисы, и я хочу сохранить эти данные в SQLite на iPhone, а также получить эти данные.Веб-сервисы включают в себя 14 параметров, а также URL-адрес изображения.Веб-сервис SOAP в .NET.

Пожалуйста, помогите мне и предоставьте полный код, как это сделать.

1 Ответ

3 голосов
/ 22 октября 2010

Веб-сервисы могут быть на Java, PHP, .NET и т. Д. Но вы должны использовать ту же процедуру, чтобы сделать запрос.Здесь я привел пример кода для выполнения запроса и получения ответа от веб-сервисов.


-(void)performRequest{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"url"]];
    NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];
    [request addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
    [request addValue: soapAction forHTTPHeaderField:@"SOAPAction"];
    [request addValue: msgLength forHTTPHeaderField:@"Content-Length"];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];
    NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    if( theConnection )
    {
        webData = [[NSMutableData data] retain];
    }
    else
    {
        NSLog(@"theConnection is NULL");
    }
    [pool release];
}

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    [webData setLength: 0];
    self.resultArray = [[NSMutableArray alloc] init];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [webData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    NSLog(@"ERROR with theConenction");
    NSDictionary *errorDic = [NSDictionary dictionaryWithObject:error forKey:@"error"];
    [self.resultArray addObject:errorDic];
    [connection release];
    [webData setLength:0];
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
    NSLog(@"DONE. Received Bytes: %d", [webData length]);
    NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
    NSLog(@"%@", theXML);
    [theXML release];
    if([webData length] > 0){
        parser = [[NSXMLParser alloc] initWithData:webData];
        [parser setDelegate:self];
        [parser parse]; 
    }
}

В этом примере «webData» (NSData) имеет данные ответа.Запрос должен быть в формате XML, а также данные ответа будут в формате XML.Используя NSXMLParser вы можете анализировать данные.Есть несколько делегатских методов.Вы должны использовать указанные ниже методы:


1. - (void)parserDidStartDocument:(NSXMLParser *)parser<br>
2. - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict<br>
3. - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string<br>
4. - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName<br>
5. - (void)parserDidEndDocument:(NSXMLParser *)parser<br>
6. - (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError<br>

во втором методе делегата, вы получите имя элемента (имя тега xml).в третьем методе делегата вы получите значение для имени элемента.

Надеюсь, это вам поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...