标签:style blog http color io 文件 for ar
今天真的好高兴呀 我解决了一个折磨了我一周的问题,真的是激动地要哭出来了,为了这个问题,我嘴也烂了,头发抓了一地啊。虽然解决方法,最后还是展现出了“百度”的伟大,但是我还是很开心,在这里我展示一下我的战果
问题的表面就是在2G下下载zip包失败,不是每次都失败,而是只要我离开当前页面再次进入当前页面就会失败(进入requestFail),如果只是离开不进入,那么一起正常。
多么诡异呀,起初我也想通过看看进入页面后是不是进行了什么卑鄙的操作,而导致ASI罢工,可是最后我放弃了,因为任何有关ASI的操作都没有呀,由于原来不是我写的,看了几天没有收获的情况,我找到了新的出路。
其实就是我自己的那字不转个儿了,既然找茬找不出来,就从实际出发解决吧,打印了 requestFail 的error ,有东西出来了 “Error Domain=ASIHTTPRequestErrorDomain Code=8 "Failed to move file from"xxx/xxx"to"xxx/xxx"”说是什么文件移动出了问题,于是百度,谷歌齐下手,发现遇到这个问题的人不多,不过还好有个人自问自答,给出了一个模糊的治标不治本的方法,就是它救了我的命。在这里给出链接可以参考“http://www.cocoachina.com/ask/questions/show/107449/asihttprequestdownloadfileerror”
可是这哥们说的也太模糊了,我首先按照他的方法试了取消了那两个路径的设置,结果真的进入到了requestFinish,这样下载就是成功了,可是怎么获得下载的内容呀?不要和我说什么[request responseData],最开始尝试的就是 结果是null,其实我自己也想到了,他自己的回答看起来像是有个函数可以用,于是我翻看了ASI的函数,还真给我找到了
- (void)setDataReceivedBlock:(ASIDataBlock)aReceivedBlock;
其实看到这个函数的时候我急激动了,感到有救了
在函数里面把收到的data进行拼接,然后在finish里面写入文件夹 ,大功告成。(_receivedDataDic 用来保存拼好的data)
[request setDataReceivedBlock:^(NSData *data) { NSMutableData *oldData = nil; if ([_receivedDataDic objectForKey:key]) { oldData = [_receivedDataDic objectForKey:key]; [oldData appendData:data]; }else { oldData = [NSMutableData dataWithData:data]; } [_receivedDataDic setObject:oldData forKey:key]; }];
下面的data写入文件夹我这里就不多描述了
-(void) requestFinished:(ASIHTTPRequest *)request
Error Domain=ASIHTTPRequestErrorDomain Code=8 "Failed to move file from"xxx/xxx"to"xxx/xxx"
标签:style blog http color io 文件 for ar
原文地址:http://www.cnblogs.com/waiwaibuzhidao/p/3927994.html