为什么我不能像/字符一样用/(正斜杠)发送标题?

时间:2014-09-04 05:49:40

标签: java ios http encoding afnetworking

我在jstring获得了Cookie值。服务器将其作为 base64encoded UTF8 字符串发送。我比较了服务器和我的结尾的字符串,我得到完全相同的字符串。

现在我需要用n=作为前缀和;作为后缀来装饰此值。 (我在第2行代码中进行此操作。)

如果我不使用行号。 1,字符串对Java Server为空。否则服务器正在获得价值。

jstring = [jstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *cookieVal=[NSString stringWithFormat:@"n=%@%@",jstring,@";"];
[self.requestSerializer setValue:cookieVal forHTTPHeaderField:@"Cookie"];

我们在iOS中使用AFNetworking进行请求和响应。我们观察到非常奇怪的模式,

如果字符串包含/(正斜杠),那么我们在Java服务器上得到填充错误,如果字符串不包含/,则字符串将按要求运行。

正如你所看到的那样。 3,我们将此值作为http / https请求的标头发送。

我尝试了很多东西,比如this(用我的字符串尝试过最后一段代码。)。此外,尝试使用不同的编码,但问题仍然存在。

1 个答案:

答案 0 :(得分:0)

此网址转换不会转换我们在ios设备键盘中的所有特殊字符。 我们必须用吹气功能转换它。将此作为类别。

- (NSString *) URLEncodedString_ch {


    return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self,  NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]%~_. ", CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));
}