程序员

NSUrl/NSUrlComponents

2017-09-01  本文已影响634人  黑炭长

可以参考这个
新接手的项目与原来的项目在请求接口的业务区分上有差别,原负责项目的接口区分业务都是用接口中的某个参数暂且叫他busnessName区分的,接收新项目后发现这个项目区分业务是用接口的path路径区分的,本想着原来的网络框架可拿过来直接使用呢,结果出个这,此时NSUrl/NSUrlComponents的用武之地就到了

接口的组成:

<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ]
nsurl.png

NSUrl操作

let baseURL = NSURL(string: "http://example.com/v1/")

NSURL(string: "foo", relativeToURL: baseURL)
// http://example.com/v1/foo

NSURL(string:"foo?bar=baz", relativeToURL: baseURL)
// http://example.com/v1/foo?bar=baz

NSURL(string:"/foo", relativeToURL: baseURL)
// http://example.com/foo

NSURL(string:"foo/", relativeToURL: baseURL)
// http://example.com/v1/foo/

NSURL(string:"/foo/", relativeToURL: baseURL)
// http://example.com/foo/

NSURL(string:"http://example2.com/", relativeToURL: baseURL)
// http://example2.com/

NSUrlComponents属性,可对照上图

scheme
user
password
host
port
path
query
fragment

对于我的需求是换完整接口的路径path,此处只需在合成完整链接时添加一步替换path即可

NSURLComponents *url = [NSURLComponents componentsWithString:@"http://3g.fang.com.cn/index/path/interFace?date=all&name=beijing"];
  url.path = @"/haha/dudu/dede";
  NSLog(@"=====%@",url);
  NSLog(@"++++++++++%@",url.string);//获取完整的替换后的链接

完成。

同时也有对个属性的编码输出

percentEncodedUser
percentEncodedPassword
percentEncodedHost
percentEncodedPath
percentEncodedQuery
percentEncodedFragment

暂时没用到在这里记录一下

上一篇下一篇

猜你喜欢

热点阅读