使用 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 对象上的 CreateUpdate 操作。

您可以通过更改它来禁用它

config/initializers/wrap_parameters.rb

wrap_parameters format: [:json] if respond_to?(:wrap_parameters)

假的

wrap_parameters false

阅读ruby docs上的其他选项

【讨论】:

以上是关于使用 NSURL 在使用 JSON 的 Rails 服务器上创建新帖子时重复的参数的主要内容,如果未能解决你的问题,请参考以下文章

关于web服务Json/rest api/Nsurl连接

swiftyJSON 从 NSURL 解析 json

Rails 3:在 Rails 中使用 JSON 响应 REST-ful 操作的正确方法是啥?

iOS 9.1 导致我的 JSON NSURL 连接到 PHP 页面时出错

我无法解析从 NSURL 会话返回的 JSON。我究竟做错了啥?

使用 Rails 5 在 Postgres 中存储字符串化 JSON