iOS AFN API版本控制BaseURL注意事项

由于业务需要,要控制不同移动端和不同版本的api请求。

直接将版本控制的信息加入到BaseURL,类似:


api版本信息放在BaseUrl

结果总是出现Not Found。

通过抓包工具Charles发现请求的url不正确,只保留了BaseUrl的域名和Path的拼接。path如下:

请求Path

网上找了很多文章,好多都没Get到点,后面在一篇文章中看到AFNetworking的发现了问题

解决AFNetworking封装baseUrl后接内容被忽略

在AFHTTPSessionManager的头文件发现如下的解释:

AFHTTPSessionManager中对Url拼接的说明

代码如下:

Below are a few examples of how `baseURL` and relative paths interact:

    NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"];

    [NSURL URLWithString:@"foo" relativeToURL:baseURL];                  //http://example.com/v1/foo

    [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL];          //http://example.com/v1/foo?bar=baz

    [NSURL URLWithString:@"/foo" relativeToURL:baseURL];                //http://example.com/foo

    [NSURL URLWithString:@"foo/" relativeToURL:baseURL];                //http://example.com/v1/foo

    [NSURL URLWithString:@"/foo/" relativeToURL:baseURL];                //http://example.com/foo/

    [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; //http://example2.com/


最后的最后,将BaseUrl修改如下:

最终的BaseUrl

Path如下:

最终的path

Thanks God!

终于可以了~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • - (void)viewDidLoad { [super viewDidLoad]; NSString *urlS...
    陌上北辰阅读 374评论 0 0
  • 现在大家都喜欢用AFNetworking,因为有人维护。看来一下官方文档,把使用的代码简单罗列一下: 首先通过Co...
    隔壁班小明阅读 830评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • iOS加载本地HTML注意点: 因为前端JS CSS 的调用有严格的页面结构 所以我们导入文件的时候尽量选择cre...
    LYPC_下里巴人阅读 996评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,606评论 28 53