2010-06-25 3 views
1

Я пытаюсь получить данные из метода POST, код следующим образом:Как я могу подтвердить, что HTTP POST вызывает мой код?

-(void)postXMLFeed:(NSString *)XMLStrPost 
{ 
    //NSLog (@"XML Feed3: ", XMLStrPost); 

    NSURL *url = [NSURL URLWithString:@"http://xxx.xxx.x.xxx/stephen/sync_upload.php"]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"]; 
    [request setHTTPMethod:@"POST"]; 
    [request setHTTPBody:[XMLStrPost dataUsingEncoding:NSASCIIStringEncoding]]; 

    NSURLResponse *response; 
    NSError *error; 
    response = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 


    // Update log file. 
    NSLog(@"XML feed POSTED to website."); 

    //[super postXMLFeed]; 
} 

Мой фид XML хранится в переменной XMLStrPost. Вышеприведенный код, похоже, работает, но я не могу его подтвердить.

Сценарий должен отследить строку и записать ее в базу данных, но это, похоже, не происходит. Прежде, чем произойдет непроверка, я хочу подтвердить, что сценарий вызывается.

Как я могу подтвердить, что скрипт sync_upload.php называется?

ответ

5

Вы злоупотребляете API. +[NSURLConnection sendSynchronousRequest:returningResponse:error] возвращает объект NSData, который является телом ответа. Вы присваиваете его объекту NSURLResponse, а это означает, что вы не только нарушаете систему типов (вы должны получать предупреждение при компиляции), но также теряете указатель на NSURLResponse, который дал вам соединение.

Это как вы снимаете себя два раза в ноге с одной пулей ... («стрелялка две ноги с одной пулей»?)

+1

Dave, Спасибо за отзыв. Я изменил строку кода, ссылаясь на следующее: NSURLConnection * connection = [[NSURLConnection alloc] initWithRequest: request delegate: self]; , и я могу подтвердить, что мой PHP-скрипт теперь вызывается. – Stephen

0

Проверьте, не показывает ли ваш файл журнала запись из вызова NSLog.

2

Прежде, чем вы зашли слишком глубоко, позвольте мне воспользоваться возможностью порекомендовать библиотеку All-Seeing Interactive HTTP по адресу http://allseeing-i.com/ASIHTTPRequest/. Делает ВСЕ ваши HTTP-взаимодействия намного проще.

При этом, если вы получили свой вызов NSLog() в консоли, то восстановленное вами синхронное соединение возвращается. Однако вы не проверяете, вернулись ли они с отказом какого-либо типа. Если бы я был вами, я бы NSLog себе некоторые из элементов вашего объекта ответа. Но опять же, использование ASIHTTP позволит вам запросить у объекта запроса много хороших вопросов о его состоянии.

+0

Большого спасибо за эту ссылку, я закладка его и его определенно то, что я буду смотреть в будущем, у меня просто нет времени на то, чтобы попытаться разобраться и реализовать свой проект. Я очень близко работаю над своим текущим кодом и могу подтвердить, что вызывается мой PHP-скрипт. Еще раз спасибо, Stephen – Stephen

0

Возвращает ли что-либо обратно на устройство, когда это делается? Я бы, вероятно, отправил обратно что-то, что означает успех или неудачу скрипта для чтения на iPhone в переменной ответа.

Смежные вопросы