今天發現了一些奇怪的東西,這可能有一個簡單的解釋。當URL引用一個子目錄時,NSURLRequest的奇怪行爲
如果我使用最初構建相對於是一個子目錄基本URL的NSURL創建的NSURLRequest,的NSURLRequest刪除子目錄。
這是很容易的代碼解釋:
// create a base URL to work with
NSURL *baseUrl = [NSURL URLWithString:@"http://www.google.com/sub"];
// create a URL relative to the base URL
NSURL *url1 = [NSURL URLWithString:@"/foo/bar" relativeToURL:baseUrl];
// create a NSURLRequest using this first URL
NSURLRequest *mangled_req = [[NSURLRequest alloc] initWithURL:url1];
NSLog(@"url1: %@", url1);
NSLog(@"mangled_req: %@", mangled_req);
// now create another URL that puts the base URL together with the relative path
NSURL *url2 = [NSURL URLWithString:@"http://www.google.com/sub/foo/bar"];
// and create a NSURLRequest, which should be the same as above
NSURLRequest *correct_req = [[NSURLRequest alloc] initWithURL:url2];
NSLog(@"url2: %@", url2);
NSLog(@"correct_req: %@", correct_req);
輸出說明了這一點:
2013-01-25 11:55:37.386 url1: /foo/bar -- http://www.google.com/sub
2013-01-25 11:55:37.408 mangled_req: <NSURLRequest http://www.google.com/foo/bar>
2013-01-25 11:55:37.409 url2: http://www.google.com/sub/foo/bar
2013-01-25 11:55:37.409 correct_req: <NSURLRequest http://www.google.com/sub/foo/bar>
注意 「mangled_req」 遺漏/分。因爲我正在使用AFNetworking,並且希望在用於測試的本地主機(其自然具有我的Web應用程序在子目錄中)和遠程服務器(不)之間切換。
當然有解決方法,但是這似乎有些奇怪足夠,我認爲我必須做一些錯誤的。
謝謝凱文,特別是說得很好(doh!) – mblackwell8