2010-12-23 92 views
0

我的網址是http://sample_domain/sample.json?{ "language" : "en", "category" : "sports"}NSURL在發送JSON服務請求時返回null?

我將它轉換爲如下所示的NSURL對象。

NSURL *url=[NSURL URLWithString:@"http://sample_domain/sample.json?{ "language" : "en", "category" : "sports"}"]; 

其返回零到NSURL對象,我知道URL應該是來自蘋果文檔的具體格式,否則將被視爲惡意軟件的網站,並返回零對象,

我的問題是如何能我將這些參數與蘋果標準一起傳遞,以便它不會重新繪製零對象。

在此先感謝。

+0

你可以用不同的方式編碼數據嗎? :`http:// sample _domain/sample.json?language = en&category = sports`正如你所看到的,它仍然是相同的信息,但現在它正常工作的方式更多,而不是堅持以不同的方式做。 – 2010-12-23 12:08:07

+0

嗨唐納德,如果我嘗試這個,即使在瀏覽器中我沒有得到響應,但如果我喜歡下面NSString * str1 = [@「\」lan \「:\」en \「,\」cat \「:\」菜單\「」stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; \t NSString * str2 = [NSString stringWithFormat:@「http://domain/test.json?{%@}」,str1]; \t NSURL * sample = [NSURL URLWithString:str2];現在我得到零URL對象,但如果我複製並粘貼'瀏覽器'在瀏覽器中獲取響應數據,所以在這裏我不應該編碼'{'以及NSURL不應該爲空,請任何想法。 – mac 2010-12-23 13:48:08

回答

1

嘗試

NSURL *url=[NSURL URLWithString:[@"http://sample_domain/sample.json?{ \"language\" : \"en\", \"category\" : \"sports\"}" 
        stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

我不知道爲什麼「「」字符不會在你的例子逃了出來,但我認爲沒有逃脫你的代碼不應該編譯。

而且你需要(這就是主要問題),以取代url中非法的字符(例如:':'和相應的百分號轉義符 - 這就是stringByAddingPercentEscapesUsingEncoding函數的作用。