Tri*_*ert 2 post cocoa file-upload nsurlrequest
(就问题而言,这确实是一个双重打击,因为确实存在两个有问题的问题,但它们有点属于一起.)
第一个问题:
我如何使用POST上传文件(我有一个包含文件内容的NSData对象),同时在一个NSProgressIndicator?中显示上传进度?就像可以执行bytesReceived一样NSURLDownload,但这次跟踪已经使用POST发送了多少字节.
第二个问题:
虽然我有这个NSData数组,但我将使用下面的代码发送NSData数组.在这里,它让我困惑如何告诉它,例如,POST值'file'是NSData对象.NSDictionary可能会在这里完成这项工作,但我现在无法访问我的电脑和可爱的Apple Docs:
NSMutableURLRequest* post = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:@"http://yourdomain.com/post.php"]];
[post setHTTPMethod: @"POST"];
[post setHTTPBody:myFileNSData];
NSURLResponse* response;
NSError* error;
NSData* result = [NSURLConnection sendSynchronousRequest:post returningResponse:&response error:&error];
NSLog(@"%@", [[[NSString alloc] initWithData:result encoding:NSASCIIStringEncoding] autorelease]);
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助.
注意 - 不幸的是,这篇文章仅具有历史意义,遗憾的是,ASIHttpRequest在几年后停止了开发.社区的悲剧.
今天(2014年)的最佳答案是:"简单地说,你必须使用其中一个库来实现这一目标."
如果有完美的图书馆,那么"滚动你自己的"将会非常疯狂,其背后有10多个人年的发展.所以,找一个图书馆(遗憾的是不再是ASIHttpRequest!)希望它有所帮助!
只需使用ASIHttpRequest即可.它是所有iOS中最常用的库,也是Mac上常用的网络库.
进度跟踪是内置的.使用它是完全无足轻重的.
如果可以的话,别忘了给这个家伙捐一小笔钱 - 如果他不再开发它我们都塞满了!
如果你只想使用Cocoa(并且我同意ASIHTTPRequest非常好),你需要异步进行发布.您在此处发布的示例代码是同步的.
这只是意味着您需要实现一些委托方法NSURLConnection来处理有关上传如何进行的信息.特别是,通过实施该方法,connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:您可以更新UI中的进度.
| 归档时间: |
|
| 查看次数: |
4070 次 |
| 最近记录: |