ios开发

2018-08-02  本文已影响19人  love_program

允许ios访问网络内容

image.png

发送异步请求网页内容显示在webview中

    //发送请求,并且显示在webview中
//    NSString *str = @"http://47.96.8.95/h5/place/test/aboutus/%E6%9C%80%E6%96%B0%E8%B5%84%E8%AE%AF.json";
    NSString *str = @"http://m.baidu.com";
    NSURL *url = [NSURL URLWithString:str];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        
        //response 服务器返回的响应头
        //data 服务器返回的响应体
        //connectionError 链接网络错误
        
        //判断请求是否错误
        if(!connectionError) {
            
            //把二进制数据转成NSString
            NSString *html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            
            [self.webview loadHTMLString:html baseURL:nil];
            NSLog(@"html=%@",html);
        } else {
            
            NSLog(@"链接错误%@", connectionError);
        }
    }];

异步请求json,并且转成字典

      NSString *str = @"http://47.96.8.95/h5/place/test/aboutus/%E6%9C%80%E6%96%B0%E8%B5%84%E8%AE%AF.json";
    NSURL *url = [NSURL URLWithString:str];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse * _Nullable response, NSData * _Nullable data, NSError * _Nullable connectionError) {
        
        if(connectionError) {
            NSLog(@"链接错误%@", connectionError);
            return ;
        }
        
        NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
        if(httpResponse.statusCode == 200 || httpResponse.statusCode == 304) {
            
            //解析data   data是json形式的字符串
            //JSON序列化 把对象转换成JSON形式的字符串
            //JSON的反序列化  把JSON形式的字符串转换成OC中的对象
            
            //把json字符串穿转成json对象
            
            NSError *error;
            
            //解析的JSON字符串,返回的OC对象可能是数组或对象
            
            //options对应三个枚举值, 如果是0的话,是不可变的
            //我们使用的时候就传入0就可以了,因为我们拿到的json字符串转成字典,最终还是要转成模型的
            //NSJSONReadingMutableContainers = (1UL << 0), //容器可变
            //NSJSONReadingMutableLeaves = (1UL << 1), //叶子可变,但是从ios7以后就不起作用了,其实就是没用了
            //NSJSONReadingAllowFragments = (1UL << 2) //运行不是JSON形式的字符串
            id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];//&error是传入error的地址
            
            if(error) {
                
                NSLog(@"解析JSON出错==%@",error);
                return;
            }
            
            NSLog(@"%@", [json class]);
            NSLog(@"json===%@", json);
        }
    }];
上一篇下一篇

猜你喜欢

热点阅读