目標(biāo)文件下載URL?http://1255429579.vod2.myqcloud.com/7c0104d8vodtransgzp1255429579/96137d634564972818890498819/v.f20.mp4
遇到的問題:實(shí)現(xiàn)AFNetWorking斷點(diǎn)下載中锨侯,期待下載的文件大小和服務(wù)器返回的文件大小不一致。
具體的請(qǐng)求配置代碼:
具體的請(qǐng)求開始響應(yīng)的回調(diào)代碼(可以在此處打印httpResponse查看響應(yīng)頭信息):
具體的請(qǐng)求HTTPHeaderField打印:
錯(cuò)誤的HttpResponse打雍媳巍:
解決過程:
首先我在CompleteBlock回調(diào)內(nèi)發(fā)現(xiàn)error對(duì)象不為空徘公,打印error相關(guān)信息提示如下:
發(fā)現(xiàn)這是一個(gè)常見錯(cuò)誤键闺。提示我們?cè)诎l(fā)起請(qǐng)求時(shí)提供的content-type 《video/mp4》 是一個(gè)不能接受的類型挎塌。
解決辦法:我這里是初始化一個(gè)AFHTTPResponseSerializer對(duì)象給了AFURLSessionManager對(duì)象,問題解決竿音。
AFHTTPResponseSerializer *responseSeriallizer = [AFHTTPResponseSerializer serializer]; [manager setResponseSerializer:responseSeriallizer];
當(dāng)然如果問題未解決也可以在AFJSONResponseSerializer這個(gè)類的初始化方法內(nèi) self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];添加自己的媒體類型(已跑題)潜沦。
下面進(jìn)入正題,我們遇到的根本問題是我們?cè)O(shè)置請(qǐng)求頭的Content-Range未被服務(wù)器使用唆樊,導(dǎo)致我們期待下載的文件大小和服務(wù)器給我們返回的文件大小不一致红伦。這個(gè)問題真是糾結(jié)了老半天膨桥;剛開始以為是后臺(tái)下載接口的問題后來問了安卓那邊回復(fù)沒有問題??蕴掏。自己又是一通好找徐伐,沒有在網(wǎng)上找到類似的經(jīng)歷性穿。排除了response.expectedContentLength可以使用其他字段替換可能。于是考慮可能是服務(wù)器做了緩存處理商源、問了下后臺(tái)出爹、下載地址是別人的我們只是拿回URL使用,后臺(tái)完全不懂??????。于是考慮我這邊發(fā)送請(qǐng)求能不能告訴服務(wù)器忽略之前的緩存信息废菱,使用每次請(qǐng)求我提供的最新的請(qǐng)求頭信息樊零。查找NSMutableURLRequest 發(fā)現(xiàn)有cachePolicy字段
這里我使用了忽略本地和遠(yuǎn)程的緩存數(shù)據(jù)NSURLRequestReloadIgnoringLocalAndRemoteCacheData值來設(shè)置網(wǎng)絡(luò)請(qǐng)求拔疚。PS:英文不好的可以翻譯哦Q选!菌湃!????????
修改后的具體請(qǐng)求配置如下:
搞定问拘!如果您也遇到這個(gè)問題,希望這篇文章對(duì)您有幫助。謝謝V枳绪杏!喜歡記得點(diǎn)喜歡??哦!Eι堋蕾久!??。