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

在blog文

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

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


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

<?php

		$arr;
    function traverse($path = '.') 
    {
        $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
        $directory_arr;
   			$file_arr;
   	
    		$directory_index = 1;
    		$file_index = 1;
    		
    		Global $arr;
    		$arr_index = 0;
    
        while(($file = readdir($current_dir)) !== false) 
        {    //readdir()返回打开目录句柄中的一个条目
            $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
            if($file == '.' || $file == '..') 
            {
                continue;
            }
            else if(is_dir($sub_dir)) 
            {    //如果是目录,进行递归
            //    echo 'Directory ' . $file . ':<br>';
                $string = "Directory";
                $string .= $directory_index;
            		$directory_arr[$string] = $file;
                $directory_index++;
                traverse($sub_dir);
          //      print_r($directory_arr);
            } 
            else
            {    //如果是文件,直接输出
            //    echo 'File in Directory ' . $path . ': ' . $file . '<br>';
            	$file_arr[$file_index] = $path . '\\' . $file . '<br>';
            	$file_index++;
            }
        };
        
        $arr["dir_count"] = count($directory_arr);
    //    print_r($file_arr);
    //    print_r(count($file_arr));
   //     echo '<br>';
    //    echo "==============================";
    //    echo '<br>';
        
        // 有一个是title需要先减出来,还有一半是.txt
        $arr[$path] = (count($file_arr) - 1) / 2;
    }

    traverse('Images');
//    print_r($arr);
    
//    print_r(json_encode($arr));
    
    $resultJson = json_encode($arr);
    echo $resultJson;
?>


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



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

这是其中一个day1的内容:



在对应的iOS端,这样写:

//
//  ViewController.m
//  Demo
//
//  Created by zengraoli on 13-10-20.
//  Copyright (c) 2013年 zeng. All rights reserved.
//

#import "ViewController.h"
#import "UIView+Additon.h"


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    [self getResourcesCount];
}

-(void)getResourcesCount
{
    NSString *baseurl=@"get_resources_count.php";
    
    NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@%@",host_url,baseurl]];
	[self setRequest:[ASIHTTPRequest requestWithURL:url]];
	[_request addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"];
	[_request startSynchronous];
    
    //显示网络请求信息在status bar上
    [ASIHTTPRequest setShouldUpdateNetworkActivityIndicator:YES];
    
    if (_request)
    {
        if ([_request error])
        {
            NSLog(@"error");
        }
        else if ([_request responseString])
        {
            NSString *result = [_request responseString];
//            NSLog(@"%@",result);
            NSDictionary *mydict = [result JSONValue];
            
            describeDictionary(mydict);
        }
    }
    else
    {
        NSLog(@"request is nil.");
    }
}

void describeDictionary(NSDictionary *dict)
{
    NSArray *keys;
    int i, count;
    id key, value;
    
    keys = [dict allKeys];
    count = [keys count];
    for (i = 0; i < count; i++)
    {
        key = [keys objectAtIndex: i];
        value = [dict objectForKey: key];
        NSLog (@"Key: %@ for value: %@", key, value);
    }
}

@end


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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值