使用 NSURL 在使用 JSON 的 Rails 服务器上创建新帖子时重复的参数
Posted
技术标签:
【中文标题】使用 NSURL 在使用 JSON 的 Rails 服务器上创建新帖子时重复的参数【英文标题】:Parameters repeated while using NSURL to create new post on rails server using JSON 【发布时间】:2011-08-20 20:08:31 【问题描述】:我的问题是,当我使用 iphone 模拟器中的以下代码发布到 Rails 服务器以创建新帖子时,参数被发送两次。
NSDictionary *thestuff = [NSDictionary dictionaryWithObjectsAndKeys:
titleIs, @"title",
descIs, @"description", nil];
NSString *tojson = [thestuff JSONRepresentation];
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request addValue:@"form-data" forHTTPHeaderField:@"Content-Disposition"];
[request setHTTPBody:[tojson dataUsingEncoding:NSUTF8StringEncoding]];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
假设 NSString tojson 包含这个:
"title":"wwd","description":"wwwwwww"
当我发送请求时,rails 服务器显示参数为:
Processing by PostsController#create as JSON
Parameters: "title"=>"wwd", "description"=>"wwwwwww", "post"=>"title"=>"wwd", "description"=>"wwwwwww"
如您所见,标题和描述根据此发送了两次。有没有办法解决这个问题,如果我使用 Post 发布用户名和密码,这是否会造成安全问题? 该帖子是按照我的意愿创建的,没有任何问题,但我真的想修复这个双参数帖子。
【问题讨论】:
您的问题似乎出在后端,而不是您的 ios 代码。 那么服务器是使用 Ruby on Rails 中的脚手架制作的。此外,当我使用创建新帖子的网页创建帖子时,这不会发生。 【参考方案1】:理想情况下,这种预期行为可以根据您的需要进行更改。这是由ActionController
中名为ParamsWrapper
的属性启用的,您可以阅读documentation here。
默认启用是为了更容易将包装参数提供给 ActiveRecord 对象上的 Create
和 Update
操作。
您可以通过更改它来禁用它
config/initializers/wrap_parameters.rb
wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
假的
wrap_parameters false
阅读ruby docs上的其他选项
【讨论】:
以上是关于使用 NSURL 在使用 JSON 的 Rails 服务器上创建新帖子时重复的参数的主要内容,如果未能解决你的问题,请参考以下文章
Rails 3:在 Rails 中使用 JSON 响应 REST-ful 操作的正确方法是啥?
iOS 9.1 导致我的 JSON NSURL 连接到 PHP 页面时出错