我有一個rails 3.0.3網站,在開發模式下,通過調用didReceiveData,然後connectionDidFinishLoading響應HTTP GET,並將照片數據從網站發送到iPhone和正確顯示。但是,當我在Amazon Web Services上以生產模式運行rails 3.0.3網站時,在didReceiveData之前調用connectionDidFinishLoading。我使用carrierwave處理開發和生產rails站點的照片。connectionDidFinishLoading之前調用didReceiveData與rails生產發送照片
有沒有人有任何想法可能會導致connectionDidFinishLoading在didReceiveData之前調用?
我試着檢查以下內容:
1)我確定NSURLConnectionDelegate被調用這個類的接口。
2)didReceiveResponse不會被調用之前connectionDidFinishLoading和的StatusCode = 200
3)在我使用由send_file發送的照片數據的Rails應用程序,並在生產中發送的文件的路徑,是一張實際的照片。
4)通過對網站的完整請求進行檢查,結果顯示使用下面的代碼在connectionDidFinishLoading中生成網站返回了0字節的數據(結果證明didReceiveData沒有被調用) :
NSData *returnedData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://production_website"]];
這裏是didReceiveData代碼:
// theConnectionData is an instance variable defined as:
NSMutableData *theConnectionData = [[NSMutableData data] retain];
-(void)connection:(NSURLConnection *)con didReceiveData: (NSData *)data {
[theConnectionData appendData:data ];
}
更新 - 我想這個問題可能是在鐵軌上的一面。下面是我用從Rails應用程序從本地存儲在AWS將照片發送到iPhone應用程序的代碼:
@p = Photo.find_by_user_id(user_id)
uploader = @p.avatar
uploader.retrieve_from_store!(File.basename(@p.avatar.url))
uploader.cache_stored_file!
send_file(uploader.file.path,
:disposition => 'inline',
:encoding => 'binary',
:type => @p.content_type,
:stream => false,
:filename => URI.encode(@p.filename),
:x_sendfile => true,
:buffer_size => 16384
)
任何人都有的,爲什麼didReceiveData是沒有得到connectionDidFinishLoading的導軌生產網站之前叫什麼想法?
它應該工作..但我們不能測試你的代碼。如果你可以提供didReceiveData的代碼。 – 2012-02-28 03:21:27
請注意,didReceiveData被rails的開發版本調用,但不會被生產版本的rails調用。 – 2012-02-28 13:23:36
你可以給生產網站的地址,以便我可以測試...它可能是你的網站的問題,而不是在生產模式下的iPhone編碼 – 2012-02-28 14:21:50