Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails AFHttpClient从Rails JSON服务接收406_Ruby On Rails_Ios_Ruby - Fatal编程技术网

Ruby on rails AFHttpClient从Rails JSON服务接收406

Ruby on rails AFHttpClient从Rails JSON服务接收406,ruby-on-rails,ios,ruby,Ruby On Rails,Ios,Ruby,我正在构建一个iOS应用程序来使用Rails3.x应用程序提供的web服务;具体地说,我希望从一个控制器接收一个JSON响应,该控制器使用这个块响应一个简单的GET请求 # after some data calls... respond_to do |format| format.json { render :json => some_object } format.xml { render :xml => some_object } end 在我的iOS应用程序中,我

我正在构建一个iOS应用程序来使用Rails3.x应用程序提供的web服务;具体地说,我希望从一个控制器接收一个JSON响应,该控制器使用这个块响应一个简单的
GET
请求

# after some data calls...

respond_to do |format|
  format.json { render :json => some_object }
  format.xml { render :xml => some_object }
end
在我的iOS应用程序中,我使用
AFNetworking
库创建
AFHTTPClient
的子类来使用此服务。当我调用GET端点时,我会收到一个HTTP406错误——如果我在本地运行Rails应用程序,我可以验证发送的是什么。它成功地运行了所有的数据调用,当它到达
respond\u to
块时,它似乎就死了,我很确定问题出在
AFNetworking
发送的请求头中

下面是我的HTTP客户机为其头设置的内容

[self setDefaultHeader:@"Accept" value:@"application/json"];
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
我的终点是

http://localhost:3000/api/some_object.json
如果我在浏览器中调用此端点,它的渲染效果很好。如果我用iOS应用程序调用它,那么我会得到406。当我向Rails应用程序中抛出断点并检查通过的标题时,
AFNetworking
似乎正在将
请求.format
设置为
mobile
——即使
格式应该是
.json
(如URL所示)。在我的浏览器中,
request.format
application/json
应该的格式

我已尝试在URL中的请求中手动设置此
格式
选项,作为查询字符串参数。。。我被难住了。什么都不管用。有什么我遗漏的吗?我需要告诉
AFNetworking
什么东西作为请求头来让它工作?我不知所措。

我刚刚搜索了源代码,但没有任何地方将格式设置为
mobile
,该字符串甚至一次都没有出现在源代码中

这必须发生在轨道一侧。您是否定义了任何移动Mime::类型别名?在您的代码中搜索
mobile
,查看出现了什么。对于临时修复,我只需重写为

format.mobile { ... }
format.json { ... }

谢谢,@coneybeare,我想你是对的——现在我想起来了,可能有另一个插件控制了格式参数,如果它来自iOS设备(可能是移动设备;它是另一个开发人员的Rails应用程序)。我要一只鹅。感谢您的指针。另外,当我输入
respond.mobile
时,HTTP客户端出于某种原因希望接收HTML。我打赌它是
mobile\u-fu
。我拥有的API控制器是从
ApplicationController
继承的,它上面有
的mobile\u-fu
声明。打破继承链修复了它。谢谢你的帮助!