发布数据格式与我需要的格式不同

时间:2011-08-30 15:56:41

标签: iphone objective-c ruby-on-rails json http

在向服务器发出更新名称字段的请求时,我遇到了一个简单的问题。我需要以这种格式发布一些数据: -

   {"api_token"=>"api", "device_token"=>"device", "user"=>{"name"=>"mohit"}, "id"=>"4"} 

但是当我试图以这种格式发布帖子时: -

  {"user"=>"(\n        {\n        name = ChangeName;\n    }\n)", "api_token"=>"api", "device_token"=>"device", "id"=>"4"}

我无法弄清楚如何更改代码以生成正确的请求。这是我正在使用的代码。

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://localhost:3000/users/4?api_token=api&device_token=device"]];
NSMutableDictionary *dict= [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Mike",@"name", nil];
NSArray *array=[[NSArray alloc]initWithObjects:dict, nil];
        [request setPostValue:array forKey:@"user"];
         [request setRequestMethod:@"PUT"];
        [request setDelegate:self];
        [request setDidFinishSelector:@selector(requestFinished:)];
        [request startAsynchronous];

如果我需要发布更多代码片段,请告诉我。

1 个答案:

答案 0 :(得分:1)

ASIFormDatRequest setPostValue:forKey:想要字符串,而不是结构。它最终调用描述将它们转换为字符串,并且你得到一个带有字典的数组的可打印描述。

Rails使用命名方案,允许您使用http://guides.rubyonrails.org/form_helpers.html中详细说明的字段命名约定来模拟平面空间中的层次结构。你应该阅读并理解表单助手产生的html。

尝试:

[request setPostValue:@"mohit" forKey:@"user[name]"];

和rails会将其解压缩到服务器上的正确类型的集合中。