我正在尝试从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
脚本?
答案 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。