0

我遇到了一个严重的问题,并且搜索了好几个小时而没有找到解决方案。

我有一个使用 Ruby of Rails 和回形针来保存图像的后端服务器。

图片上传从浏览器正常工作,发布到 /pictures

但是当我尝试使用带有 RestKit (iOS) 的多部分请求将其上传到 /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

CSRF 检查被禁用。

当使用 Wireshark 比较来自浏览器和 iOS 的请求时,它们非常相似。

在此先感谢您的帮助。

4

1 回答 1

1

问题出在 RoR 上,respond_to您应该使用format.json. 而不是format.js.

于 2013-05-13T09:11:53.137 回答