如何确认HTTP POST调用我的代码?

时间:2010-06-25 16:55:04

标签: iphone objective-c xcode 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 Feed存储在变量XMLStrPost中。上面的代码似乎有效但我无法确认它。

脚本应该解压缩字符串并将其写入数据库,但这似乎不会发生。在解组之前,我想确认正在调用脚本。

如何确认调用sync_upload.php脚本?

4 个答案:

答案 0 :(得分:5)

您滥用API。 +[NSURLConnection sendSynchronousRequest:returningResponse:error]返回一个NSData对象,该对象是响应的主体。你将它分配给一个NSURLResponse对象,这意味着你不仅要打破类型系统(你应该在编译时收到警告),但你也失去了指向{{1}的指针连接给你的。

就像你用一颗子弹射击自己两次......(“用一颗子弹射击两英尺”?)

答案 1 :(得分:2)

在此之前,我要抓住机会,在http://allseeing-i.com/ASIHTTPRequest/推荐All-Seeing Interactive HTTP库。使您的所有HTTP交互变得非常简单。

也就是说,如果你在控制台中获得了NSLog()调用,那么你在那里创建的同步连接已经返回。但是,你没有测试它是否因某种类型的故障而返回。如果我是你,我会给自己NSLog一些你的响应对象的元素。但同样,使用ASIHTTP将允许您向请求对象询问有关其状态的许多好问题。

答案 2 :(得分:0)

检查您的日志文件是否显示NSLog来电的条目。

答案 3 :(得分:0)

完成后是否会将任何内容返回设备?我可能会从脚本中发回一些表示成功或失败的内容,以便您在响应变量中阅读iPhone。