在实际开发当中,我们通常要和服务器打交道。经常我们会设置 baseURL requestURL 和parameters
如果我们把这三个元素拼起来 并NSLog输出 这样我们每掉一次接口 就可以看到完整的拼接后的URL 方便调试
好了 废话不多说 代码如下
+ (NSString*)lz_urlEncode:(NSString*)str {
NSString *result = (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)str, CFSTR("."), CFSTR(":/?#[]@!$&'()*+,;="), kCFStringEncodingUTF8);
return result;
}
+ (NSString *)lz_urlParametersStringFromParameters:(NSDictionary *)parameters {
NSMutableString *urlParametersString = [[NSMutableString alloc] initWithString:@""];
if (parameters && parameters.count > 0) {
for (NSString *key in parameters) {
NSString *value = parameters[key];
value = [NSString stringWithFormat:@"%@",value];
value = [self lz_urlEncode:value];
[urlParametersString appendFormat:@"&%@=%@", key, value];
}
}
return urlParametersString;
}
+ (NSString *)lz_urlStringWithOriginUrlString:(NSString *)originUrlString appendParameters:(NSDictionary *)parameters {
NSString *filteredUrl = originUrlString;
NSString *paraUrlString = [self lz_urlParametersStringFromParameters:parameters];
if (paraUrlString && paraUrlString.length > 0) {
if ([originUrlString rangeOfString:@"?"].location != NSNotFound) {
filteredUrl = [filteredUrl stringByAppendingString:paraUrlString];
} else {
filteredUrl = [filteredUrl stringByAppendingFormat:@"?%@", [paraUrlString substringFromIndex:1]];
}
return filteredUrl;
} else {
return originUrlString;
}
}
我们在调起请求前 调用
lz_urlStringWithOriginUrlString:(NSString *)originUrlString appendParameters:(NSDictionary *)parameters
这个方法就OK了。我是这样用的
NSLog(@"POST类型序列化接口:%@",[AFHTTPSessionManager lz_urlStringWithOriginUrlString:url appendParameters:parameters]);
NSLog(@"POST类型接口:%@ \n参数:%@",url,parameters);
Parameters