我遇到了一個嚴重的問題,並且沒有找到解決方案就搜索了很多小時。將圖像從RestKit上傳到RoR後端406時
我有一個使用Ruby of Rails和回形針進行圖像保存的後端服務器。
的圖片上傳工作正常,從瀏覽器,張貼到/圖片
但是,當我試圖把它上傳使用與RestKit(IOS)multipart請求到/pictures.json,我得到一個406
當圖像(圖片對象)在服務器端創建時,獎勵(獎勵對象)與其相關聯。這個獎勵對象就是我期待的JSON響應。
這裏是Objective-C代碼:
NSMutableURLRequest* uploadRequest = [self.objectManager multipartFormRequestWithObject:nil method:RKRequestMethodPOST
path:@"/pictures.json"
parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData
appendPartWithFileData:UIImagePNGRepresentation(socialReward.image)
name:@"picture[pict]"
fileName:imageName
mimeType:@"image/png"];
}];
這裏是控制器:
@picture = Picture.create(params[:picture])
respond_to do |format|
format.html {
redirect_to @picture.reward
}
format.js {
render :json => @picture.reward.to_json(:include => :picture)
}
end
的跨站請求僞造支票被禁用。
使用Wireshark比較來自瀏覽器和iOS的請求時,它們非常相似。
在此先感謝您的幫助。
相似 - 有什麼不同? RestKit是否將accept頭設置爲顯示它期望從服務器返回JSON? – Wain 2013-05-13 08:54:19
感謝您的回覆。主體是一樣的(除了來自瀏覽器的請求中存在的不同邊界名稱和authenticity_token)。瀏覽器請求中的Accept是「text/html,application/xhtml + xml,application/xml; q = 0.9,*/*; q = 0.8」。在RestKit中是「application/json」。但這是正確的,因爲我期待JSON的迴應。 – 2013-05-13 08:59:39