在我的应用程序中,我使用NSURLSession执行POST。
遵循的步骤:
代码是:
NSDictionary *parameters = @{ @"searchTerm": @"shampoo", @"sort": @"Most Reviewed" };
NSError *error = nil;
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&error];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"SomeURL"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
request.HTTPBody = postData;
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSLog(@"Pass");
}
}];
[dataTask resume];
现在在自定义NSURLProtocol类中:
(BOOL)canInitWithRequest:(NSURLRequest *)request {
if ([request.HTTPMethod isEqualToString:@"POST"]) {
//here request.HTTPMethod is coming nil
//Whereas my requirement is to get request.HTTPMethod which got request parameter.
return YES;
}
return NO;
}
提前致谢。
答案 0 :(得分:0)
IIRC,正文数据对象在到达您之前会被URL加载系统透明地转换为流式正文。如果您需要读取数据: 打开HTTPBodyStream对象 从中读取身体数据 有一个警告:流可能无法倒带,因此不要将该请求对象传递给以后需要访问主体的任何其他代码。不幸的是,也没有请求新主体流的机制(有关其他限制,请参阅Apple网站上CustomHTTPProtocol示例代码项目的README文件)。