iphone tableview & webservice - PullRequest
       9

iphone tableview & webservice

0 голосов
/ 12 апреля 2010

У меня есть просмотр таблицы, когда пользователь выбирает строку, я вызываю веб-сервис в зависимости от того, какая строка выбрана.

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

//rootviewcontroller.m

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {....
    //call to webservice
    [self connectToWebService];
    }

При отладке я обнаружил, что мой код не подходит ни к одному из следующих методов

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *) response{}
-(void) connection:(NSURLConnection *) connection didReceiveData:(NSData *) data {}
-(void) connection:(NSURLConnection *) connection didFailWithError:(NSError *) error{}
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {}

какие-либо предложения, где я иду не так ??? спасибо

-(void)connectToWebService
{
        NSString *soapMsg = [NSString stringWithFormat:
                         @"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
                         "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
                         "<soap:Body>"
                             " <GetCount xmlns=\"http://192.168.1.104/Service1\">"
                             "<PropId>718</PropId>"
                             "</GetCount>"
                             "</soap:Body>"
                             "</soap:Envelope>"];
        NSURL *url = [NSURL URLWithString: 
                      @"http://192.168.1.104/defpath/service1.asmx"];
        NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
        //---set the headers---
        NSString *msgLength = [NSString stringWithFormat:@"%d",[soapMsg length]];
        [req addValue:@"text/xml; charset=utf-8" 
        forHTTPHeaderField:@"Content-Type"];
        [req addValue:@"http://192.168.1.104/defpath/Service1/GetCount" 
        forHTTPHeaderField:@"SOAPAction"];
        [req addValue:msgLength forHTTPHeaderField:@"Content-Length"];

        //---set the HTTP method and body---
        [req setHTTPMethod:@"POST"];
        [req setHTTPBody: [soapMsg dataUsingEncoding:NSUTF8StringEncoding]];

        conn = [[NSURLConnection alloc] initWithRequest:req delegate:self];
        if (conn) {
            webData = [[NSMutableData data] retain];
            }   

1 Ответ

0 голосов
/ 30 января 2011

Я не знаю, решена ли ваша проблема: Вы можете получить ответ так:

-(void) connection:(NSURLConnection *) connection //Recive response
didReceiveResponse:(NSURLResponse *) response {
    [webData setLength: 0];
}
-(void) connection:(NSURLConnection *) connection //Repeative call method and append data to webData
    didReceiveData:(NSData *) data {
    [webData appendData:data];
}

-(void) connection:(NSURLConnection *) connection//If error occure error should be displayed  
  didFailWithError:(NSError *) error {
    NSLog(@"Problème de connexion au service web appelé");
    [webData release];
    [connection release];
}

-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
    NSLog(@"OK. Bytes reçues: %d", [webData length]);

    NSString *theXML = [[NSString alloc] 
                        initWithBytes: [webData mutableBytes] 
                        length:[webData length] 
                        encoding:NSUTF8StringEncoding];
    //---shows the XML---
    NSLog(theXML);


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