我在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(用我的字符串尝试过最后一段代码。)。此外,尝试使用不同的编码,但问题仍然存在。
答案 0 :(得分:0)
此网址转换不会转换我们在ios设备键盘中的所有特殊字符。 我们必须用吹气功能转换它。将此作为类别。
- (NSString *) URLEncodedString_ch {
return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]%~_. ", CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));
}