美文网首页
实际项目多个IP地址寻址切换

实际项目多个IP地址寻址切换

作者: 辛乐 | 来源:发表于2018-11-23 15:57 被阅读9次

由于前期宏定义,造成如下代码较多

//获取账户信息
#define lbUserinfoAddress lbBaseApiAddress@"user_info.do"
//下单
#define lbCreatOrderAddress lbBaseApiAddress@"create_order.do"
//撤销订单
#define lbCancelOrderAddress lbBaseApiAddress@"cancel_order.do"

实际部署的服务器在不同的网络线路(联通,移动,长城等)下域名解析还是其他什么原因造成有些线路访问不了,所以这里后台配置了多个域名,在程序中出现请求失败切换线路,目前简单实现是在afnetworking请求失败的回掉里边处理,相对代码改动比较少,侵染也比较小.

就以post举例说明

+(void)requestApiWithMethodPost:(NSString *)url param:(NSMutableDictionary *)param thenSuccess:(void (^)(id  responseObject))success fail:(void (^)(void))fail;
{
    
    NSString *newurL=[url stringByReplacingOccurrencesOfString:NetStatusURLStr withString:@""];
    newurL = [self dealNowIPHostUrlWithUrl:newurL];
    [self showLoadingWithURLStr:newurL];//loading加载图
    AFHTTPSessionManager *manager = [self singleManager];
    [self setLanguageWithAFHTTPSessionManager:manager];
    
    [manager.requestSerializer setValue:@"zh-CN" forHTTPHeaderField:@"accept-language"];
    
    [manager POST:newurL parameters:param progress:^(NSProgress * _Nonnull uploadProgress) {
        
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        id response = [NSJSONSerialization JSONObjectWithData:responseObject options:(NSJSONReadingMutableContainers) error:nil];
        
        dispatch_async(dispatch_get_main_queue(), ^{
            !success ? : success(response);
            [self dealWithResponse:response Url:url Param:param];
        });
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        [self dealWithError:error];//(此处切换ip处理)
        //  [XLUtil showMessage:RDLocalizedString(@"网络错误")];
        dispatch_async(dispatch_get_main_queue(), ^{
            !fail ? : fail();
        });
    }];
}

+(void)dealWithError:(NSError *)error{
    
    [self changeNetworkIpUrlIndex];
    if(error){
        LOG(@"网络错误");
        LOG(@"原始错误信息:%@",error);
    }
    [SVProgressHUD dismiss];
}

#pragma mark -- 切换IP地址
/**处理当前请求的URL*/
+(NSString *)dealNowIPHostUrlWithUrl:(NSString *)urlStr{
    
    if (![urlStr isEqualToString:TestLBURL] &&
        ![urlStr isEqualToString:WLBURL] &&
        ![urlStr isEqualToString:PCLBURL]){
        
        NSURL *URL = [NSURL URLWithString:urlStr];
        NSString *hostStr = URL.host;
        if (![hostStr containsString:@"https"]) {
            hostStr = [NSString stringWithFormat:@"https://%@",hostStr];
        }
        NSString *replaceHostStr = [self getIPHostUrl];
        urlStr = [urlStr stringByReplacingOccurrencesOfString:hostStr withString:replaceHostStr];
    }
    return urlStr;
}

/**获取当前的IP地址*/
+(NSString *)getIPHostUrl{
    
    NSInteger index = [[[NSUserDefaults standardUserDefaults] valueForKey:KNetWorkIpHostIndex] integerValue];
    if (index >= [self urlHostArr].count) {
        index = 0;
    }
    return [NSString stringWithFormat:@"%@",[NetWorking urlHostArr][index]];
}

/**备用的ip地址列表*/
+(NSArray *)urlHostArr{
    return @[
             @"https://xxxx.com",
             @"https://xxxx.com",
             @"xxxxxx",
             ];
}
/**切换IP地址*/
+(void)changeNetworkIpUrlIndex{
    NSInteger index = [[[NSUserDefaults standardUserDefaults] valueForKey:KNetWorkIpHostIndex] integerValue];
    index = index + 1;
    if (index >= [self urlHostArr].count) {
        index = 0;
    }
    [[NSUserDefaults standardUserDefaults] setValue:@(index) forKey:KNetWorkIpHostIndex];
}


相关文章

  • 实际项目多个IP地址寻址切换

    由于前期宏定义,造成如下代码较多 实际部署的服务器在不同的网络线路(联通,移动,长城等)下域名解析还是其他什么原因...

  • win10 ip却换脚本

    由于需要经常切换ip地址,每次都手动去切换很麻烦,于是写了个自动切换ip的bat,分享出来,大家可以根据自己的实际...

  • 多个ip地址

    如何为一台电脑设置多个IP? (2010-01-13 19:07:32) 转载▼ 标签: 电脑 两个ip 分类:计...

  • 网络工程师实战系列视频课程【IP规划篇】(考题精讲 + 项目实战

    课程目标:让大家理解IP地址基础,顺利解答各种IP地址相关考试题目,并能在实际项目中,专业规范地进行IP地址规划设...

  • 使用Netsh快捷修改IP地址

    在需要频繁切换各种IP地址的时候,手动去切换IP地址很麻烦,所以使用Netsh命令进行切换是最便捷的。具体使用方法...

  • K8S中的IP地址

    kubernetes里有三张不同的网络,每种IP地址,就代表一个不同的寻址空间 Node IP:Node节点的IP...

  • IP协议及IP数据包详解

    一)IP协议的功能: (1)寻址和路由;(根据对方的IP地址,寻找最佳路径传输信息); (2)传递服务:① 不可靠...

  • 重定向

    HTTP重定向 DNS重定向 任播寻址 IP MAC转发 IP地址转发 js中实现重定向的几种方式 window....

  • Ubuntu为网卡添加多个IP地址

    1. 临时生效的方法 为网卡添加多个IP地址 添加的网卡不一定为eth0,按实际情况而定 删除添加的IP地址 查看...

  • Linux命令行

    常用Linux命令行 查看网络是否连接: ping IP地址 查看本地IP地址: ifconfig 切换root ...

网友评论

      本文标题:实际项目多个IP地址寻址切换

      本文链接:https://www.haomeiwen.com/subject/gjbjqqtx.html