今天在学习Python后台开发当中发现 ios的afn框架的delet方法 python的django框架无法打印接受到的ios客户端传来的参数 后发现参数的传递过程中afn直接将参数拼在url的后面 导致python后台无法接受到参数,经过一番源码阅读 afn中有这么一句话:
if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) {
if (query && query.length > 0) {
mutableRequest.URL = [NSURL URLWithString:[[mutableRequest.URL absoluteString] stringByAppendingFormat:mutableRequest.URL.query ? @"&%@" : @"?%@", query]];
}
} else {
// #2864: an empty string is a valid x-www-form-urlencoded payload
if (!query) {
query = @"";
}
if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) {
[mutableRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
}
[mutableRequest setHTTPBody:[query dataUsingEncoding:self.stringEncoding]];
}
是因为afn的HTTPMethodsEncodingParametersInURI的集合当中包含了delet的方法,导致参数拼接的问题,最后只需要在afn的HTTPMethodsEncodingParametersInURI的集合当中去掉Delet的元素就行
如:manager.requestSerializer.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", nil];









网友评论