Не получает данные из NSMutableURLRequest (синхронизация приложения iPhone) - PullRequest
1 голос
/ 11 января 2012

В прошлом я создавал приложение для iPhone, основанное на базе данных sqlite, обновленной страницей php. Когда вы получаете доступ к странице PHP, она распечатывает дамп базы данных sqlite, и приложение выполняет различные запросы для обновления базы данных sqlite. Мое предыдущее приложение работало нормально и обновлялось соответствующим образом. Недавно я попытался применить тот же процесс к новому приложению с гораздо большей базой данных. Я столкнулся с проблемами.

Что я делаю, так это отправляю некоторые переменные post на страницу PHP, которая распознает POST и выводит команды sqlite для обновления базы данных. Проблема в том, что страница печатает команды за несколько секунд. Если у меня на странице напечатан какой-то статический текст, я получаю его в своем NSLog (@ "Данные ответа будут ==>% @", результат); команда. Если мне нужно извлечь информацию из моей базы данных MySQL, это займет около 3-5 секунд, а затем напечатает (в моем обычном браузере). Однако, когда я запускаю приложение, оно говорит, что данные отклика будут ==> (null) вместо команд.

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

Помощь оценена.

    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:urlBase]];
    [request setHTTPMethod:@"POST"];
    [request setTimeoutInterval:60.0];
    NSData *post = [myParameters dataUsingEncoding: NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d",[post length]];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Current-Type"];
    [request setHTTPBody:post];
    [request setHTTPBody:[myParameters dataUsingEncoding:NSUTF8StringEncoding]];

    // set headers
    NSString *contentType = [NSString stringWithFormat:@"text/plain"];

    NSHTTPURLResponse *urlResponse = nil;
    NSError *error = [[NSError alloc] init];

    NSData *responseData = [NSURLConnection sendSynchronousRequest:request 
                                                 returningResponse:&urlResponse 
                                                             error:&error];

    NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    NSLog(@"Response data is going to be ==> %@", result);

1 Ответ

0 голосов
/ 11 января 2012

попытайтесь понять этот код .. это помогает вам.

NSString *soapMessage=[NSString stringWithFormat:@" YOUR WEB SERVICE CODE",myTxt1.text,myTxt2.text];

NSLog(@"%@",soapMessage);

//-----------create connection

NSURL *url=[NSURL URLWithString:@"http://your local host webservice url"];

NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:url];

NSString *msgLength=[NSString stringWithFormat:@"%d",[soapMessage length]];

// ---------- отправка запроса

[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

[theRequest addValue: @"http://tempuri.org/AutenticateUser" forHTTPHeaderField:@"SOAPAction"];

[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];

[theRequest setHTTPMethod:@"POST"];

[theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];

NSURLConnection *theConnection=[[NSURLConnection alloc]initWithRequest:theRequest delegate:self];

// [activityIndicatorstartAnimating];

if ( theConnection )

{
webData = [[NSMutableData data] retain];
}
else
{
NSLog(@"theConnection is NULL");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...