关闭

ios发送HTTP请求和操作JSON

标签: ioshttpjson
1387人阅读 评论(0) 收藏 举报
分类:

发送HTTP请求的代码:

-(void) queryUserDataFromServer
{
    YLSClientInfo *clientInfo = [YLSClientInfo new];
    NSString *versionCode = clientInfo.currentClientVersion;// 应用当前版本号
    
    YLSUserData *userData = [YLSUserDataUtil readUserData];
    NSString *userId = userData.userId;// userId
    
    NSString *url = [QUERY_USER_BY_USERNAME_SERVICE_URL stringByAppendingString:userId];
    
    NSMutableURLRequest *request = [NSMutableURLRequest new];
    [request setURL:[NSURL URLWithString:url]];
    [request setHTTPMethod:@"GET"];
    [request setValue:@"true" forHTTPHeaderField:@"xhr"];
    [request setValue:versionCode forHTTPHeaderField:@"clientVersionCode"];
    
    loginResponse = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
}

另外,ios会自动处理cookie的保存和发送,一般不需要特别编码处理

操作JSON的代码:

    NSError *error = nil;
    NSDictionary *jsonArray = [NSJSONSerialization JSONObjectWithData:loginResponse options:kNilOptions error:&error];// loginResponse是NSData类型,包含两个key,分别是code和result
    
    NSDictionary *result = [jsonArray objectForKey:@"result"];// 取出result字段
    
    NSString *enterpriseId = [result objectForKey:@"enterpriseId"];
    // 其他字段
    
    NSDictionary *features = [result objectForKey:@"versionFeature"];// versionFeature是嵌套的另一个object
    
    NSNumber *maxServiceCount = [features objectForKey:@"maxServiceCount"];
    // 其他字段

HTTP响应的返回值是一个NSData*,用ios原生的NSJSONSerialization类就可以处理。上面代码处理的文本格式是:

{
    "result":
        {
            "enterpriseId":xxxx,
            "userId":xxxx,
            "versionFeature":
                {
                     "maxServiceCount":20,
                     "maxEmployeeCount":5
                }
        },
     "code":0
}


可以看出,在ios中,解析后的JSON对象,是看做NSDictionary来处理
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:761839次
    • 积分:14056
    • 等级:
    • 排名:第905名
    • 原创:651篇
    • 转载:18篇
    • 译文:0篇
    • 评论:130条
    最新评论