Вызов Webservice по проблемам NSURLConnection, не вызывается каждый раз? - PullRequest
0 голосов
/ 03 февраля 2012

Я звоню .NET веб-сервис, размещенный локально из моего приложения для iPhone (iOS5), например:

(IBAction)btnCallService:(id)sender {
    [XYZActivity startAnimating];
    // So I could show activity on my main UI thread.
    [self performSelector: @selector(CallXYZSService) 
               withObject: nil 
               afterDelay: 0];
   }

 (void) CallXYZSService
{
   NSURL *url = [NSURL URLWithString: @"http://localwinhost/JSON_Service.asmx/GetFunction1"];


    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url cachePolicy:1 timeoutInterval:30];
    NSData *requestData = [NSData dataWithBytes:[jsonRequest UTF8String] length:[jsonRequest length]];

    [request setHTTPMethod:@"POST"];

    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"close" forHTTPHeaderField:@"Connection"];
    [request setValue:[NSString stringWithFormat:@"%d", [requestData length]] forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody: requestData];
    //[req setHTTPBody: [postStr dataUsingEncoding:NSUTF8StringEncoding]];

    myConn = [[NSURLConnection alloc] initWithRequest:request delegate:self];
    if (myConn) {
        webData = [NSMutableData data];
    }
    else
    {
        NSLog(@"Connection Failed");
   }

}

}


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

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

-(void) connection:(NSURLConnection *)connection
  didFailWithError:(NSError *) error {
 NSLog(@"Service Failed");
}

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

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

Это как-то связано с предыдущими подключениями к веб-сервису?Что касается тестирования, я вызываю 2,3 разных функции на одном и том же сервисе на одном и том же сервере ... но это происходит на разных контроллерах представления ... поэтому я инициирую новое соединение и устанавливаю nil в методе connectionDidFinishLoading.

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

Спасибо, Maverick


Я изменил код, как показано ниже

I have changed the code as below   NSString *jsonRequest_NE =    [NSString stringWithFormat:@"ID=%@&Password=%@",strID,strPwd];
NSString *jsonRequest =    [jsonRequest_NE stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSLog(@"Request: %@", jsonRequest);

NSString *myURL = @"http://localwinhost/JSON_Service.asmx/GetFunction1";

NSString *fixedURL = [myURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

но все тот же beahviour, иногда это работает, иногда это просто не ..... Я искал много ... но все еще не мог найти правильное решение ... любой PLZ, помогите мне hereeeeeeeeeeee !!!

1 Ответ

0 голосов
/ 05 февраля 2012

Убедитесь, что в переменной jsonRequest нет символов, отличных от UFT8.
Дайте мне знать, как вам это удалось.

...