gpt4 book ai didi

iphone - 如何使用 ASIFormDataRequest 到 NSDictionary 对象的 http post 数组

转载 作者:可可西里 更新时间:2023-11-01 03:58:37 25 4
gpt4 key购买 nike

嘿,我需要使用一组 NSDictionary 对象发出 HTTP POST 请求。

但是,当我这样做时,我注意到在服务器端 NSDictionary 对象没有反序列化为散列。它被反序列化为一个字符串——这不是我想要的。

这是我从客户端(iPhone)端发送参数的方式:

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
for (ABContact *c in contactsWithEmailsOrPhones){
NSString *phoneNumber = [[ABContactsHelper class] contactPhoneNumber:c];
NSString *email = [[c emailArray] objectAtIndex:0];
NSLog(@"looping: %@, %@", phoneNumber, email);
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
phoneNumber,
@"phone",
email,
@"email",
[c firstname],
@"firstname",
[c lastname],
@"lastname", nil];

[request addPostValue:dict forKey:@"contacts[]"];
}

[request setDelegate:self];
[request startAsynchronous];

这是在服务器(rails)端反序列化时的样子:

Started POST "/app/find_friends" for 67.164.97.48 at Thu Sep 23 14:40:37 -0700 2010
Processing by app#find_friends as HTML
Parameters: {"contacts"=>["{\n    email = \"xx\";\n    firstname = xx;\n    lastname = xx;\n    phone = \"xx\";\n}", "{\n    email = \"xx\";\n    firstname = xx;\n    lastname = xx;\n    phone = \"xx\";\n}"]}
Completed 200 OK in 0ms (Views: 0.3ms | ActiveRecord: 0.0ms)

我相信这是人们面临的普遍问题。所以肯定有解决方案。

提前感谢所有评论/回答。

最佳答案

首先,解释一下您所看到的:

addPostValue 方法旨在获取单个值,并调用 [value description] 将该值转换为字符串。 description 方法给出了一个字符串表示,这就是您在服务器端看到的(如果您将对象传递给它, description 方法也是 NSLog 调用的方法,因此格式应该看起来很熟悉)。所以 iphone 被要求发送一个字符串,并且这样做了,服务器“正确地”将其显示为一个字符串。

如果您只想发送一个联系人,则只需为每个键/值对调用“addPostValue”——即。一次用于电话,一次用于电子邮件等。

如果你想传递多个联系人,你可能需要更好的东西。我不太熟悉 ruby​​-on-rails,所以可能还有其他解决方案,但肯定的是,将更复杂的数据结构从 iphone 传递到 web 服务的常用方法是使用 json。

这里有一个适用于 iphone 的 json 库:

http://code.google.com/p/json-framework/

ruby on rails 内置了 json 支持。

关于iphone - 如何使用 ASIFormDataRequest 到 NSDictionary 对象的 http post 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3784122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com