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
暂时没用到在这里记录一下