最近遇到一個怪異的url問題,我是在公司wiki上複製的url(類似http://baidu.com/),然後加上需要傳給平台的參數,用AFNetworking的post請求執行該url。然後報:Invalid parameter not satisfying: URLString
。
但是url只有%、&、字母數字沒有其他特殊字元。在執行中斷點列印該url,放到瀏覽器中http
後面少了一個:
,手動加上:
請求正確。在程式中繼續執行,報上面的錯誤,這是再複製打印的url到瀏覽器中,沒有:
丟失的情況,請求正確。
之前遇到過一次這種情況,手動去打url,解決了問題。但現在好像不管用了,而且我很納悶的是為什麼會有這個問題,搞不明白,大神指點指點啊:0—0:
哦,你是在URL裡傳參,參數也是一個URL是麼?
這種情況,你需要對參數的URL進行URLEncode(編碼)操做,這有代碼,很簡單URLEncode
編碼操作會將影響URL完整性的特殊字元轉換成百分號編碼,這樣就不會遺失了。
由於url支援26個英文字母、數字和少數幾個特殊字符,因此,對於url中包含非標準url的字符時,就需要對其進行編碼。 iOS中提供了函數stringByAddingPercentEscapesUsingEncoding對中文和一些特殊字元進行編碼,但是stringByAddingPercentEscapesUsingEncoding的功能並不完善,對一些較為特殊的字元無效。而對這些字元則可以使用CFURLCreateStringByteAddingPercentEscapes函數
如下:
祝你好運。