搜尋

首頁  >  問答  >  主體

objective-c - iOS中一個怪異的url問題

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

为情所困为情所困2846 天前597

全部回覆(1)我來回復

  • 迷茫

    迷茫2017-05-02 09:20:57

    哦,你是在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;
    }

    祝你好運。

    回覆
    0
  • 取消回覆