【问题标题】:Why I am not able send header with /(forward slash) like character?为什么我无法发送带有 /(正斜杠)之类的字符的标题?
【发布时间】:2014-09-04 05:49:39
【问题描述】:

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

现在我需要用n= 作为前缀和; 作为后缀来装饰这个值。 (我在代码的 第 2 行 中所做的)。

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

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

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

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

正如您在第 1 行中看到的那样。 3,我们将此值作为 http/https 请求的标头发送。

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

【问题讨论】:

    标签: java ios http encoding afnetworking


    【解决方案1】:

    此 url 转换不会转换我们在 ios 设备键盘中拥有的所有特殊字符。 我们必须用打击功能来转换它。将此用作类别。

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

    【讨论】:

    • 我正在使用相同的代码/在 %2F 中转换,尝试转换两次它可能会在服务器端进行一些解码。
    猜你喜欢
    • 2014-01-02
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-02-28
    • 2016-12-12
    相关资源
    最近更新 更多