iPhone未下载文件

iPhone未下载文件,iphone,asihttprequest,Iphone,Asihttprequest,我有一个测试和工作的php脚本,它从数据库中提取并以XML形式返回。 我已经使用ASIHTTPRequest成功地发布到php脚本。 我已经在网上寻找帮助,让这个工作。据我所知,所有代码都是可靠的。它编译正确,运行没有问题,甚至发出请求也没有问题。我没有错误。 由于我已经彻底测试并成功地使用了php,我认为这一突破是在iPhone方面 我不明白为什么它不将XML文件下载到指定的位置。 如有任何见解,将不胜感激 // Create the request NSURL *url=[[NSURL al

我有一个测试和工作的php脚本,它从数据库中提取并以XML形式返回。 我已经使用ASIHTTPRequest成功地发布到php脚本。 我已经在网上寻找帮助,让这个工作。据我所知,所有代码都是可靠的。它编译正确,运行没有问题,甚至发出请求也没有问题。我没有错误。 由于我已经彻底测试并成功地使用了php,我认为这一突破是在iPhone方面

我不明白为什么它不将XML文件下载到指定的位置。 如有任何见解,将不胜感激

// Create the request
NSURL *url=[[NSURL alloc]initWithString:@"http://localhost:8888/Project/script.php"];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url]retain];

// gather *ALL* data present
if ( [txtEmail.text length] > 0 )
    [request setPostValue:txtEmail.text forKey:@"email"];
if ( [txtFName.text length] > 0 )
    [request setPostValue:txtFName.text forKey:@"firstname"];
if ( [txtID.text length] > 0 )
    [request setPostValue:txtID.text forKey:@"id"];
if ( [txtLName.text length] > 0 )
    [request setPostValue:txtLName.text forKey:@"lastname"];

[request setDidFailSelector:@selector(requestFailed:)]; 
[request setDidFinishSelector:@selector(requestDone:)]; 

[request setDownloadDestinationPath:@"/Library/Project/dbInfo.xml"]; 
[request setDelegate:self]; 
[request startSynchronous]; 
[request release];
[url release];

关于代码的几点:

  • 为什么要使用POST请求下载文件?通常下载是通过GET请求完成的(如果我们说的是REST)。您可以使用一个简单的ASIHTTPRequest+将post值添加为URL参数(+在php端相应地处理它)

  • 您正在分配并保留ASIFormDataRequest实例,但仅释放一次->会导致内存泄漏。(对于每个alloc/copy/retain->release)

  • 要回答您的问题: 我认为downloadDestinationPath是错误的(应用程序没有在那里写入的权限)。 更好:

    现在,“dbInfo.xml”文件保存在应用程序的documents文件夹中。 如果您正在模拟器中运行应用程序,您可以在以下位置找到目录: ~/Library/Application Support/iPhone Simulator/IOS\u SDK\u VERSION/Applications/APP\u UID/Documents

    以及: 如果实现downloadProgressDelegate:请求:didReceiveBytes:方法,则可以检查是否实际接收数据:

    -(void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes {
      NSLog(@"received bytes ..") ;
    }
    

    你能告诉我们setDownloadDestinationPath方法的定义吗。您有权将文件读/写到您的下载指定位置吗?setDownloadDestinationPath是ASIHTTPRequest的一部分。这与权利无关。我也无法让它与直接响应一起工作,即NSString*response=[request responseString];iPhone上是否有服务器在8888端口上运行<代码>本地主机在本例中,将是手机本身…是的,并且该脚本与HTTP表单一起正常工作。另外,我还有另一个类似的方法,可以向数据库中发布一个add,并且可以正常工作。我正在使用POST来适应它。目前的项目是让我准备一个更大的项目,我需要熟悉的部分。该文件未显示在库中。不过,感谢您发现内存泄漏。
    -(void)request:(ASIHTTPRequest *)request didReceiveBytes:(long long)bytes {
      NSLog(@"received bytes ..") ;
    }