网络异步连接参数解析——利用配置好的APache本地服务器做测试

本文介绍了本地计算机的IP地址127.0.0.1及其对应的域名localhost,并通过一个iOS开发示例展示了如何使用这些信息进行网络请求测试。文中还详细解释了NSURLRequest的相关属性和NSURLConnection的异步请求处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本地计算机的IP地址和域名

IP地址:127.0.0.1

是回送地址,指本地机,一般用来测试使用。

无论什么程序,一旦使用回送地址发送数据,协议软件立即返回,不要进行任何网络传输。

常用测试命令:ping 127.0.0.1

域名:localhost

在计算机网络中,localhost(本地主机)是给回路网络接口的一个标准主机名,相对应的IP地址为127.0.0.1

打开本地连接,如果出现乱码,解决方法如下:


如下所示:


工程代码如下所示:

<span style="font-size:18px;">//
//  ViewController.m
//  异步连接参数解析
//
//  Created by apple on 15/10/26.
//  Copyright (c) 2015年 LiuXun. All rights reserved.
//

#import "ViewController.h"
#import <Foundation/Foundation.h>

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    /* 0.
     此方法虽然可以直接从网址请求数据,但有时候返回的data是nil,无法打印错误信息
     这个方法是同步的
     dataWithContentsOfURL:url 方法是同步的,超时时长是60秒
     NSData *data = [NSData dataWithContentsOfURL:url];
     UIImage *image = [UIImage imageWithData:data];
     */
    
    // 1. url—— 访问的是自己主机的服务器  注意地址中不可含有中文字符
    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/demo.json"];
    
    // 2. 建立一个请求对象
    /**   第一种方式
     NSURLRequest *request = [NSURLRequest requestWithURL:url];
     */
    
    /**
     第二种方式
     参数: url:资源路径
     cachePolicy : 资源策略
     timeoutInterval :超时时间,默认是60秒(默认超过60秒服务器无响应就返回请求失败信息)。一般手动设置为15~20秒
     SDWebImage的超时时长设置为15秒
     AFN使用的是系统的60秒
     */
    NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:0 timeoutInterval:20];
    
    // 3. 建立连接,发送请求到服务器
    /**
     request:请求
     queue:队列,这个队列,是完成以后,回调block执行的队列,也就是说是数据请求完成执行完成代码块才使用的队列
     Asynchronous:只要是异步,肯定会开新的线程。
     Handler:网络访问完成以后执行的代码块
     response:服务器的响应(包含响应的信息,响应头之类的...  到下载的时候才会关心此参数)
     data:返回的二进制数据
     connectionError:服务返回的错误, 只要有网络访问,就有可能有错误
     
     使用场景:如果下载的是压缩包,解压缩也是一个耗时操作。
     如果在block内有需要执行耗时操作,就把queue指定为子线程,然后在耗时操作执行完毕获得主线程并在主线程上更新UI。  如果block块内没有耗时操作要执行或只需要更新UI,就直接执行queue参数为主线程即可
     */
    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init ]completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
        // 网络请求完成以后会调用这段代码,从服务器获得二进制数据
        
        if (connectionError || data == nil) {
            NSLog(@"您的网络不给力,请稍后再试");
            return;
        }
        
        // 假设是解压缩——耗时操作
        NSLog(@"%@", [NSThread currentThread]);
        
        //在主线程更新UI
        dispatch_async(dispatch_get_main_queue(),^{
            NSLog(@"%@------%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding], [NSThread currentThread]);
            
        });
    }];
    
}
@end

/**
 typedef NS_ENUM(NSUInteger, NSURLRequestCachePolicy)
 {
 NSURLRequestUseProtocolCachePolicy = 0, // 默认缓存策略,会自动缓存
 
 NSURLRequestReloadIgnoringLocalCacheData = 1,
 NSURLRequestReload(刷新)Ignoring(忽略)Local(本地)CacheData (缓存数据)= 1,   刷新忽略本地数据,即每次都从服务器去加载数据,忽略本地数据
 
 NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4, // Unimplemented(苹果预留参数,还未实现)
 -------------------------------------------------------------------------------------------------
 此两个 一般来离线访问。一般配合Reachability(苹果提供的检测网络连接的框架来使用)
 
 // 如果用户使用的是WIFI,就使用这个策略
 NSURLRequestReturnCacheDataElseLoad = 2, // 如果有缓存就使用缓存,如果没有缓存就上网。
 
 // 检测如果使用的是3G就使用如下策略
 NSURLRequestReturnCacheDataDontLoad = 3, // 如果有缓存,就是用缓存。没有就返回空,不会网络请求数据
 -------------------------------------------------------------------------------------------------
 NSURLRequestReloadRevalidatingCacheData = 5, // Unimplemented(苹果预留参数,还未实现)
 };
 
 */</span>
运行结果如下所示:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值