我需要在我们的应用中阻止一个HTTP请求的一个参数值的URL编码,因为它在传递给AFNetworking之前已经被编码。*
似乎显而易见的方法是在AFHTTPRequestSerializer上使用setQueryStringSerializationWithBlock。但是,在我不需要自定义处理的情况下,我无法弄清楚如何移交给AFNetworking进行默认序列化。
即。我需要能够说(伪代码):
[sessionManager.requestSerializer setQueryStringSerializationWithBlock:
^NSString *(NSURLRequest *request, NSDictionary *parameters, NSError *__autoreleasing *error)
{
if (request is DFP request and parameter is cust_params)
{
// do special handling
}
else
{
// do standard URL encoding for the parameter
// how?
}
}];
基本上,对于else的情况,我想做AFURLRequestSerialization.requestBySerializingRequest做的事情,即调用静态函数:
AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding);
然而,这不会在AFURLRequestSerialization.m实现文件之外公开,因此我无法调用它。
这里的正确行动是什么?
*相关参数是DFP广告投放调用的cust_params参数,请参阅:https://support.google.com/dfp_premium/answer/1080597
答案 0 :(得分:0)
AFQueryStringFromParametersWithEncoding
是私有的,但其实现是通过使用URL编码的请求参数序列化的默认AFHTTPRequestSerializer
实现公开的。只需从块中的另一个实例获取值。