objective-c - iOS中一個怪異的url問題
为情所困
为情所困 2017-05-02 09:18:57
0
1
558

最近遇到一個怪異的url問題,我是在公司wiki上複製的url(類似http://baidu.com/),然後加上需要傳給平台的參數,用AFNetworking的post請求執行該url。然後報:Invalid parameter not satisfying: URLString
但是url只有%、&、字母數字沒有其他特殊字元。在執行中斷點列印該url,放到瀏覽器中http後面少了一個,手動加上:請求正確。在程式中繼續執行,報上面的錯誤,這是再複製打印的url到瀏覽器中,沒有:丟失的情況,請求正確。
之前遇到過一次這種情況,手動去打url,解決了問題。但現在好像不管用了,而且我很納悶的是為什麼會有這個問題,搞不明白,大神指點指點啊:0—0:

为情所困
为情所困

全部回覆(1)
迷茫

哦,你是在URL裡傳參,參數也是一個URL是麼?

這種情況,你需要對參數的URL進行URLEncode(編碼)操做,這有代碼,很簡單URLEncode

編碼操作會將影響URL完整性的特殊字元轉換成百分號編碼,這樣就不會遺失了。

由於url支援26個英文字母、數字和少數幾個特殊字符,因此,對於url中包含非標準url的字符時,就需要對其進行編碼。 iOS中提供了函數stringByAddingPercentEscapesUsingEncoding對中文和一些特殊字元進行編碼,但是stringByAddingPercentEscapesUsingEncoding的功能並不完善,對一些較為特殊的字元無效。而對這些字元則可以使用CFURLCreateStringByteAddingPercentEscapes函數

如下:

- (NSString *)URLEncodedString:(NSString*)resource {
    CFStringRef url = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)resource, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8); // for some reason, releasing this is disasterous
    NSString *result = (__bridge NSString *)url;
    //    [result autorelease];
    return result;
}

祝你好運。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板