objective-c - iOS中一个怪异的url问题
为情所困
为情所困 2017-05-02 09:18:57
0
1
552

最近遇到一个怪异的url问题,我是在公司wiki上复制的url(类似http://baidu.com/),然后加上需要传给平台的参数,用AFNetworking的post请求执行该url。然后报:Invalid parameter not satisfying: URLString
但是url只有%、&、字母数字没有其他特殊字符。在执行中断点打印该url,放到浏览器中http后面少了一个,手动加上:请求正确。在程序中继续执行,报上面的错误,这是再复制打印的url到浏览器中,没有:丢失的情况,请求正确。
之前遇到过一次这种情况,手动去打url,解决了问题。但是现在好像不管用了,而且我很纳闷的是为什么会有这个问题,搞不明白,大神指点指点啊:0—0:

为情所困
为情所困

répondre à tous(1)
迷茫

Oh, vous transmettez le paramètre dans l'URL. Le paramètre est-il également une URL ?

Dans ce cas, vous devez URLEncode (encoder) l'URL du paramètre Il y a un code, c'est très simple URLEncode

L'opération d'encodage convertira les caractères spéciaux qui affectent l'intégrité de l'URL en pourcentage d'encodage afin qu'ils ne soient pas perdus.

Étant donné que l'URL prend en charge 26 lettres anglaises, chiffres et quelques caractères spéciaux, lorsque l'URL contient des caractères d'URL non standard, elle doit être codée. iOS fournit la fonction stringByAddingPercentEscapesUsingEncoding pour encoder le chinois et certains caractères spéciaux. Cependant, la fonction stringByAddingPercentEscapesUsingEncoding n'est pas parfaite et n'est pas valide pour certains caractères spéciaux. Pour ces caractères, vous pouvez utiliser la fonction CFURLCreateStringByteAddingPercentEscapes

est le suivant :

- (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;
}

Bonne chance.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal