Я звоню .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 !!!