美文网首页程序员
NSUrl/NSUrlComponents

NSUrl/NSUrlComponents

作者: 黑炭长 | 来源:发表于2017-09-01 16:26 被阅读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

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

相关文章

网友评论

    本文标题:NSUrl/NSUrlComponents

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