在NSData中发送php对象和变量
实际上,我正在尝试发送一个php变量(表示“您现在已连接!”)。 我想知道如何使用NSData在我的iphone应用程序中恢复此变量 我的代码如下:在NSData中发送php对象和变量,php,iphone,objective-c,nsdata,Php,Iphone,Objective C,Nsdata,实际上,我正在尝试发送一个php变量(表示“您现在已连接!”)。 我想知道如何使用NSData在我的iphone应用程序中恢复此变量 我的代码如下: NSMutableURLRequest *Requete = [NSMutableURLRequest requestWithURL:url]; [Requete setHTTPMethod:@"POST"]; // On passe les variables [Requete setHTTPBody:[[NSString stringWi
NSMutableURLRequest *Requete = [NSMutableURLRequest requestWithURL:url];
[Requete setHTTPMethod:@"POST"];
// On passe les variables
[Requete setHTTPBody:[[NSString stringWithFormat:@"email=%@ &
password=%@",email,password]dataUsingEncoding:NSASCIIStringEncoding]];
NSURLResponse *response;
NSError *error;
NSData *result = [NSURLConnection sendSynchronousRequest:Requete returningResponse:&response error:&error];
NSString *test = [[NSString alloc]initWithData:result encoding:NSASCIIStringEncoding];
NSLog(test);
我的phpscript中有一个echo“Connected!”。我想恢复变量return$Connected=1。
当我运行此命令时,控制台打印已连接!而不是1;
再也不知道要恢复一个php对象,要执行完全相同的过程吗
谢谢大家,
QuentinPHP在服务器端执行,这意味着移动(或其他)客户端将无法再使用所有变量,除非您明确定义它们(通过回显它们) 所以你有两个选择:
echo“$$connected=1”代码>这样,您将在NSData中将其作为输出检索。请注意,这将不是一个iphone变量。要使其成为iphone变量,必须对PHP输出进行JSON编码:{“connected”:1}
或让PHP文件生成PLIST。然后使用适当的JSON/PLIST反序列化程序反序列化NSData
*测试
。只是:
if ([test rangeOfString:@"Connected!"] > 0 ) test = @"1";
使用方法1,您必须
NSMutableDictionary *mydict = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error];
test = [mydict objectForKey:@"connected"];
顺便说一句,如果您的url变量之间的空格不是故意为了StackOverflow可读性而添加的,您应该删除它们,即user=%@&pass=%@
而不是user=%@&pass=%@
PS——如果您使用的是iOS SDK<5,则必须使用第三方工具处理JSON序列化/反序列化,例如JSONKit、JSON、touchJSON等。PHP在服务器端执行,这意味着您的移动设备(或其他)将无法再使用您的所有变量除非您明确定义客户机,否则客户机确实存在(通过回显它们) 所以你有两个选择:
echo“$$connected=1”代码>这样,您将在NSData中将其作为输出检索。请注意,这将不是一个iphone变量。要使其成为iphone变量,必须对PHP输出进行JSON编码:{“connected”:1}
或让PHP文件生成PLIST。然后使用适当的JSON/PLIST反序列化程序反序列化NSData
*测试
。只是:
if ([test rangeOfString:@"Connected!"] > 0 ) test = @"1";
使用方法1,您必须
NSMutableDictionary *mydict = [NSJSONSerialization JSONObjectWithData:result options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error];
test = [mydict objectForKey:@"connected"];
顺便说一句,如果您的url变量之间的空格不是故意为了StackOverflow可读性而添加的,您应该删除它们,即user=%@&pass=%@
而不是user=%@&pass=%@
PS——如果您使用的是iOS SDK<5,则必须使用第三方工具处理JSON序列化/反序列化,例如JSONKit、JSON、touchJSON等。非常感谢您的快速回答!两种解决方案似乎都很有趣。我将尝试一下。所以,我想如果我想发送一个php对象,最好使用JSON解决方案,当然。我会使用第一种解决方案。您可以使用
json\u encode($myphpobj)
。也可以对数组使用相同的json_编码。然后,您将使用方法#1在NSMutableDictionary中重新创建对象。非常感谢您的快速回答!两种解决方案似乎都很有趣。我将尝试一下。所以,我想如果我想发送一个php对象,最好使用JSON解决方案,当然。我会使用第一种解决方案。您可以使用json\u encode($myphpobj)
。也可以对数组使用相同的json_编码。然后使用方法#1在NSMutableDictionary中重新创建对象。