我想向一个 URL 发出 PUT 请求,但是当输出显示状态码为 405 时,这意味着对 URL 的请求不是 put。
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];
NSURL * url = [NSURL URLWithString"http://httpbin.org/put"];
NSMutableURLRequest *request =[[NSMutableURLRequest alloc]initWithURL:url];
NSData *postbody = [@"name=testname&suggestion=testing123" dataUsingEncoding:NSUTF8StringEncoding];
[request setValue"application/x-www-form-urlencoded" forHTTPHeaderField"Content-Type"];
request.HTTPMethod = @"UT";
[request setHTTPBody:postbody];
NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithURL:url
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if(error == nil)
{
[request setHTTPBody:data];
NSLog(@"Response = %@",response);
}
}];
[dataTask resume];
有人能指出我哪里出错了吗,自过去几个小时以来,我已经阅读了很多有关此问题的信息,但我无法弄清楚。请不要将此标记为重复,因为之前的操作没有添加正文,而我的代码并非如此。提到的 URL 也接受任何数据作为正文,所以我猜我设置的数据是无关紧要的。
编辑(回答):
在昨天敲了我的头之后,我的一位前辈帮我解决了这个问题,希望这会对某人有所帮助。数据任务需要提供请求对象而不是 URL,这就是它在 Charles Web 调试工具中总是显示“GET”的原因。代码应该如下:
NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// code
}];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"UT";
关于ios - 如何在 NSURLSession 中发出 PUT 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34853520/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://jike.in/) | Powered by Discuz! X3.4 |