ios - 使用 AFNetworking 从 Django 服务器下载文件

标签 ios django swift afnetworking afnetworking-2

我正在使用 AFNetworking 向 Django 服务器发送 HTTP 请求以将文件下载到 iPhone。但是,控制台也不会打印出“成功”或“错误”。我也无法在特定目录“.../database”中找到该文件。对于服务器端,日志文件是正确的 ([22/Jan/2015 16:45:49] "GET/main/receivefile/HTTP/1.1"200 16811),我可以看到请求并且没有错误。这是我的客户端代码:

var parameters = ["username":"u987103"];

let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let outPath = String(format: "%@/database/tmp.txt", documentsPath)


self.man = AFHTTPRequestOperationManager()

self.op = self.man.GET(url, parameters: parameters,
        success: {(operation:AFHTTPRequestOperation!,responseObject:AnyObject!) in
            println("Success")
        }
        , failure:{(operation:AFHTTPRequestOperation!,error:NSError!) in
            println("Error: %@",error);
        })
op.outputStream = NSOutputStream(toFileAtPath: outPath, append: false)

Django服务器中请求URL对应的代码为:

def retrieve_file(request):
    filename = os.path.basename(m_path)
    path = os.path.join(settings.MEDIA_ROOT,m_path)
    wrapper = FileWrapper(file(path))
    response = HttpResponse(wrapper,content_type="text/plain")
    response['Content-Disposition'] = 'attachment; filename="'+filename+'"'
    return response

我已经测试过使用 Chrome 下载文件,只要我输入 URL 并点击“输入”,文件就会下载到我的下载文件夹中。那么谁能告诉我为什么它对 AFNetwokring 不起作用?

最佳答案

是的,没错。

在这里查看文档 - http://cocoadocs.org/docsets/AFNetworking/2.0.0/Classes/AFHTTPRequestOperationManager.html#//api/name/responseSerializer .您需要为 AFHttpRequestOperationManager 指定响应序列化程序。

您似乎正在下载一个纯文本文件,因此您可以使用默认的序列化程序。添加此调用:

self.man.responseSerializer = AFHttpResponseSerializer()

在调用 self.man.GET 之前。

https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-2.0-Migration-Guide有一些关于响应和请求序列化器如何工作的细节。

关于ios - 使用 AFNetworking 从 Django 服务器下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28100766/

相关文章:

django - 配置 Django 和 Google Cloud Storage?

django - Django 中的网上商店。如何按用户过滤订单?

python - 无法在 Linux mint 19.1 上为 python3.7.4 安装 Django 2.2.4

xcode - 在 Swift 中的类之间传递变量

swift - 在 Swift 中添加 NavigationBar 和 NavigationController 后不应该调用 autorotate

ios - 无法加载 HTTP URL 图片

objective-c - 如何显示来自 RSS 源的图像

ios9 移动 safari 景观 css 错误,位置为 :absolute bottom:0

javascript - onPlay(或 onClick?)在 iPad 上触发全屏视频

ios - UIPageViewController 不遵守 iOS 7 中的顶部布局指南