iOS通过ASIHttpRequest接收php端发送的Json数据

来源:互联网 发布:iphone47.12优化 编辑:程序博客网 时间:2024/05/02 10:36

http://blog.csdn.net/zengraoli/article/details/12918369


在blog文

iOS使用ASIHttpRequest+Json与服务器段脚本进行登陆验证

 中,没有仔细的说清楚,到底是如何交互的,很是抱歉;毕竟我用php也仅限于这几天。。


先来看,我刚才写的一个php端:

[php] view plaincopyprint?
  1. <?php  
  2.   
  3.         $arr;  
  4.     function traverse($path = '.')   
  5.     {  
  6.         $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false  
  7.         $directory_arr;  
  8.             $file_arr;  
  9.       
  10.             $directory_index = 1;  
  11.             $file_index = 1;  
  12.               
  13.             Global $arr;  
  14.             $arr_index = 0;  
  15.       
  16.         while(($file = readdir($current_dir)) !== false)   
  17.         {    //readdir()返回打开目录句柄中的一个条目  
  18.             $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径  
  19.             if($file == '.' || $file == '..')   
  20.             {  
  21.                 continue;  
  22.             }  
  23.             else if(is_dir($sub_dir))   
  24.             {    //如果是目录,进行递归  
  25.             //    echo 'Directory ' . $file . ':<br>';  
  26.                 $string = "Directory";  
  27.                 $string .= $directory_index;  
  28.                     $directory_arr[$string] = $file;  
  29.                 $directory_index++;  
  30.                 traverse($sub_dir);  
  31.           //      print_r($directory_arr);  
  32.             }   
  33.             else  
  34.             {    //如果是文件,直接输出  
  35.             //    echo 'File in Directory ' . $path . ': ' . $file . '<br>';  
  36.                 $file_arr[$file_index] = $path . '\\' . $file . '<br>';  
  37.                 $file_index++;  
  38.             }  
  39.         };  
  40.           
  41.         $arr["dir_count"] = count($directory_arr);  
  42.     //    print_r($file_arr);  
  43.     //    print_r(count($file_arr));  
  44.    //     echo '<br>';  
  45.     //    echo "==============================";  
  46.     //    echo '<br>';  
  47.           
  48.         // 有一个是title需要先减出来,还有一半是.txt  
  49.         $arr[$path] = (count($file_arr) - 1) / 2;  
  50.     }  
  51.   
  52.     traverse('Images');  
  53. //    print_r($arr);  
  54.       
  55. //    print_r(json_encode($arr));  
  56.       
  57.     $resultJson = json_encode($arr);  
  58.     echo $resultJson;  
  59. ?>  


在服务器端直接运行这个php脚本之后得到的页面如下:



这是一个获取当前webroot目录下,Images文件夹里面的目录个数,和这些目录个数下面.jpg文件个数的一个demo

这是其中一个day1的内容:



在对应的iOS端,这样写:

[cpp] view plaincopyprint?
  1. //  
  2. //  ViewController.m  
  3. //  Demo  
  4. //  
  5. //  Created by zengraoli on 13-10-20.  
  6. //  Copyright (c) 2013年 zeng. All rights reserved.  
  7. //  
  8.   
  9. #import "ViewController.h"  
  10. #import "UIView+Additon.h"  
  11.   
  12.   
  13. @interface ViewController ()  
  14.   
  15. @end  
  16.   
  17. @implementation ViewController  
  18.   
  19. - (void)viewDidLoad  
  20. {  
  21.     [super viewDidLoad];  
  22.     // Do any additional setup after loading the view, typically from a nib.  
  23.       
  24.     [self getResourcesCount];  
  25. }  
  26.   
  27. -(void)getResourcesCount  
  28. {  
  29.     NSString *baseurl=@"get_resources_count.php";  
  30.       
  31.     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",host_url,baseurl]];  
  32.     [self setRequest:[ASIHTTPRequest requestWithURL:url]];  
  33.     [_request addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"];  
  34.     [_request startSynchronous];  
  35.       
  36.     //显示网络请求信息在status bar上  
  37.     [ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES];  
  38.       
  39.     if (_request)  
  40.     {  
  41.         if ([_request error])  
  42.         {  
  43.             NSLog(@"error");  
  44.         }  
  45.         else if ([_request responseString])  
  46.         {  
  47.             NSString *result = [_request responseString];  
  48. //            NSLog(@"%@",result);  
  49.             NSDictionary *mydict = [result JSONValue];  
  50.               
  51.             describeDictionary(mydict);  
  52.         }  
  53.     }  
  54.     else  
  55.     {  
  56.         NSLog(@"request is nil.");  
  57.     }  
  58. }  
  59.   
  60. void describeDictionary(NSDictionary *dict)  
  61. {  
  62.     NSArray *keys;  
  63.     int i, count;  
  64.     id key, value;  
  65.       
  66.     keys = [dict allKeys];  
  67.     count = [keys count];  
  68.     for (i = 0; i < count; i++)  
  69.     {  
  70.         key = [keys objectAtIndex: i];  
  71.         value = [dict objectForKey: key];  
  72.         NSLog (@"Key: %@ for value: %@", key, value);  
  73.     }  
  74. }  
  75.   
  76. @end  


这是调用这段代码后,解析Json数据得到的结果:

0 0
原创粉丝点击