Java 为什么我不能发送带有/(正斜杠)字符的标题?
我在Java 为什么我不能发送带有/(正斜杠)字符的标题?,java,ios,http,encoding,afnetworking,Java,Ios,Http,Encoding,Afnetworking,我在jstring中获得cookie值。服务器正在以Base64编码的UTF8字符串的形式发送它。我比较了服务器和终端的字符串,得到了完全相同的字符串 现在我需要用n=作为前缀和来修饰这个值作为后缀。(我正在代码第2行中执行此操作) 若我不使用第1行,那个么Java服务器的字符串将为null。否则服务器将获得价值 jstring = [jstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSString
jstring
中获得cookie值。服务器正在以Base64编码的UTF8字符串的形式发送它。我比较了服务器和终端的字符串,得到了完全相同的字符串
现在我需要用n=
作为前缀和来修饰这个值代码>作为后缀。(我正在代码第2行中执行此操作)
若我不使用第1行,那个么Java服务器的字符串将为null。否则服务器将获得价值
jstring = [jstring stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *cookieVal=[NSString stringWithFormat:@"n=%@%@",jstring,@";"];
[self.requestSerializer setValue:cookieVal forHTTPHeaderField:@"Cookie"];
我们在iOS中使用AFNetworking
进行请求和响应。我们观察到了非常奇怪的模式
若字符串包含/
(正斜杠),那个么我们在Java服务器上得到了填充错误,若字符串不包含/
,那个么字符串将按要求运行
如第3行所示,我们将此值作为http/https请求的头发送
我已经尝试了很多东西,比如(用我的字符串尝试了最后一段代码)。另外,尝试使用不同的编码,但问题仍然存在 此url转换不会转换ios设备键盘中的所有特殊字符。
我们必须用blow函数来转换它。将此用作类别
- (NSString *) URLEncodedString_ch {
return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL, (CFStringRef)self, NULL, (CFStringRef)@"!*'\"();:@&=+$,/?%#[]%~_. ", CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)));
}
我正在使用相同的代码/正在%2F中转换,请尝试转换两次,可能服务器端正在进行解码。