1

所以我正在尝试使用 AFNetworking 将 XML 文件上传到带有 POST 的服务器。
所以使用他们网站上的示例代码我已经设置好了。当它运行时,一些东西被上传到服务器(或者至少它离开了我的电脑)。我可以监控上传,当上传完成时,服务器识别它完成并去加载文件,但它加载了一个旧的 XML。所以它正确连接到服务器,但我不确定为什么文件上传不能正常工作。另外我只想发送文件,服务器不需要任何标题或参数等。
所以我想知道我是否正确存储了数据?或者如果我没有正确发送服务器或什么?任何的意见都将会有帮助

NSData *iTunesXMLData = [NSData dataWithContentsOfFile:filePath];

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url];

  /* NSMutableURLRequest *request =[httpClientmultipartFormRequestWithMethod:@"POST"     
path:@"/upload.php?id=5" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFileData:iTunesXMLData name:@"iTunes Music Library" fileName:@"iTunes Music Library.xml" mimeType:@"application/xml"];
}];*/

//I tried this way also, both did the same thing

NSMutableURLRequest *request = [httpClient multipartFormRequestWithMethod:@"POST" path:@"/upload.php?id=5" parameters:nil constructingBodyWithBlock: ^(id <AFMultipartFormData>formData) {
    [formData appendPartWithFormData:iTunesXMLData name:@"iTunes Music Library"];
}];`

 AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];`

NSLog(@"Operation: %@", operation);
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
    NSLog(@"Sent %lld of %lld bytes", totalBytesWritten, totalBytesExpectedToWrite);
}];
[operation start];
4

1 回答 1

1

您是否尝试过捕捉操作的成功/失败?之后试试这个setUploadProgressBlock

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    // Operation ended successfully
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // Something happened! 
    NSLog(@"ERROR: %@, %@", operation, error);
    // Here you can catch operation.responseString to see the response of your server
}];

这是了解服务器返回内容的简单方法。如果有内容上传到您的服务器,请仔细检查您是否获得了正确的文件。AFAIK,您的 AFNetwork 似乎还可以。

于 2012-11-26T11:54:18.230 回答