【code_小馬】SDWebImage加載url圖片不顯示

我們是工程師 ——加油 !

1.問(wèn)題描述
2.解決方法
3.問(wèn)題分析
4.補(bǔ)充


1問(wèn)題描述

使用SDwebImage去加載含有逗號(hào)的url 時(shí)候會(huì)無(wú)法加載泣洞,但是在瀏覽器上顯示正常忧风。

報(bào)錯(cuò):Error Domain=NSURLErrorDomain Code=-1100 "(null)"

接口例如:

代碼.png
輸出臺(tái)
報(bào)錯(cuò).png

我知道遇到問(wèn)題都急于解決,所以先寫解決方案球凰,后寫分析

2 解決方法:

 找到UIImageView+WebCache.m文件狮腿,
 在統(tǒng)一下載圖片入口前面添加如下代碼(當(dāng)然,
 用戶代理的value也可以是其他格式呕诉,下面代碼只做為參考)



- (void)sd_setImageWithURL:(NSURL *)url
          placeholderImage:(UIImage *)placeholder
                   options:(SDWebImageOptions)options
                  progress:(SDWebImageDownloaderProgressBlock)progressBlock
                 completed:(SDWebImageCompletionBlock)completedBlock {


    NSString *userAgent = @"";
    userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]];

    if (userAgent) {
        if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) {
            NSMutableString *mutableUserAgent = [userAgent mutableCopy];
            if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, (__bridge CFStringRef)@"Any-Latin; Latin-ASCII; [:^ASCII:] Remove", false)) {
                userAgent = mutableUserAgent;
            }
        }

        [[SDWebImageDownloader sharedDownloader] setValue:userAgent forHTTPHeaderField:@"User-Agent"];
    }


 ...... /*這里省略SD源碼*/ 
}

3.問(wèn)題分析

這是因?yàn)槿鄙?User-Agent 用戶代理缘厢。
看到別人的博文上面解釋的用戶代理是這么解釋的:用戶代理 User Agent,是指瀏覽器甩挫,它的信息包括硬件平臺(tái)贴硫、系統(tǒng)軟件、應(yīng)用軟件和用戶個(gè)人偏好伊者。

設(shè)置用戶代理格式例如:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36

個(gè)人的理解是 : 設(shè)置了用戶代理英遭,才能訪問(wèn)到這張圖片。至于這個(gè)用戶代理的格式亦渗,只要有值或者約定的特定格式字符串都可以挖诸。

4.補(bǔ)充:

有些時(shí)候,雖然圖片的url是自己公司的央碟,不需要設(shè)置用戶代理,但是由于含有了特殊符號(hào)或者中文漢字,仍然會(huì)造成不能加載的情況,針對(duì)這個(gè)問(wèn)題亿虽,可以用下邊的方法菱涤;

# TODO:只含有<中文漢字>的url鏈接

 NSString * url_string = @"https://img.chaboshi.cn/article/2017-05-02xinche封面.jpg";

#方法1:
 NSString * utf8_string =  [url_string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
        
      
#方法2:
NSString * utf8_string2 = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)url_string,NULL,NULL,kCFStringEncodingUTF8));


#TODO:含有< 中文漢字> 和 < 特殊符號(hào)> 的url鏈接

#方法3:
 NSString *utf8_string3 = (NSString *) CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)url_string,(CFStringRef)@"!$&'()*+,-./:;=?@_~%#[]",NULL,kCFStringEncodingUTF8));

Copyright ? 著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)洛勉,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處粘秆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市收毫,隨后出現(xiàn)的幾起案子攻走,更是在濱河造成了極大的恐慌,老刑警劉巖此再,帶你破解...
    沈念sama閱讀 221,273評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件昔搂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡输拇,警方通過(guò)查閱死者的電腦和手機(jī)摘符,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)策吠,“玉大人逛裤,你說(shuō)我怎么就攤上這事『锬ǎ” “怎么了带族?”我有些...
    開(kāi)封第一講書(shū)人閱讀 167,709評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蟀给。 經(jīng)常有香客問(wèn)我蝙砌,道長(zhǎng),這世上最難降的妖魔是什么坤溃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,520評(píng)論 1 296
  • 正文 為了忘掉前任拍霜,我火速辦了婚禮,結(jié)果婚禮上薪介,老公的妹妹穿的比我還像新娘祠饺。我一直安慰自己,他們只是感情好汁政,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,515評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布道偷。 她就那樣靜靜地躺著,像睡著了一般记劈。 火紅的嫁衣襯著肌膚如雪勺鸦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,158評(píng)論 1 308
  • 那天目木,我揣著相機(jī)與錄音换途,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛军拟,可吹牛的內(nèi)容都是我干的剃执。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼懈息,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼肾档!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起辫继,我...
    開(kāi)封第一講書(shū)人閱讀 39,660評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤怒见,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后姑宽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體遣耍,經(jīng)...
    沈念sama閱讀 46,203評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,287評(píng)論 3 340
  • 正文 我和宋清朗相戀三年低千,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了配阵。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,427評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡示血,死狀恐怖棋傍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情难审,我是刑警寧澤瘫拣,帶...
    沈念sama閱讀 36,122評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站告喊,受9級(jí)特大地震影響麸拄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜黔姜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,801評(píng)論 3 333
  • 文/蒙蒙 一拢切、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秆吵,春花似錦淮椰、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,272評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至毙芜,卻和暖如春忽媒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腋粥。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,393評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工晦雨, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留架曹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,808評(píng)論 3 376
  • 正文 我出身青樓闹瞧,卻偏偏與公主長(zhǎng)得像音瓷,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夹抗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,440評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容