【问题标题】:Post Data format is diffrent then what I needed发布数据格式与我需要的不同
【发布时间】:2011-08-30 15:56:41
【问题描述】:

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

   {"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];

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

【问题讨论】:

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


    【解决方案1】:

    ASIFormDatRequest setPostValue:forKey: 需要字符串,而不是结构。它最终调用 description 将它们转换为字符串,您将获得包含字典的数组的可打印描述。

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

    试试:

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

    Rails 会将其解包到服务器上适当类型的集合中。

    【讨论】:

    • 是的,没错,我得到了一个带有字典的数组的可打印形式。我试图直接从终端点击,当我看到控制台时,服务器正在将其读取为 "user"=>{"name"=>"mohit"} 但是当我尝试使用 ASIHttpRequest 发送相同的内容时,它显示 {"user "=>"(\n {\n name = ChangeName;\n }\n)"。现在你可以理解我只需要将 {"user"=>"(\n {\n name = ChangeName;\n }\n)" 转换为 "user"=>{"name"=>"mohit" }。有什么帮助吗?
    • 对于我的应用,"user"=>{"name"=>"mohit"}
    • 我不明白你的服务器到底想要什么。 HTTP 只允许键值对的平面列表,而不是层次结构。 ASIFormDataRequest 将采用字典 { "foo"=>"fa"; "bar"="ba" } 并将其转换为 HTTP 查询字符串 ?foo=fa&bar=ba。将层次结构放入查询字符串的唯一方法是通过将 JSON 作为值发送来伪造它
    • 好的。但是我怎样才能在 iOS sdk 上实现呢? ASIHttpRequest 框架中是否没有这样的方法可以为我提供所需的编码?或者有什么可以在服务器端做的吗?提前致谢。
    • 你必须回答这个问题——服务器想要什么编码?您是否可以创建一个静态 http 表单来产生正确的结果?发布代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 2021-12-28
    相关资源
    最近更新 更多