Ios 如何在NSURLSession中发出PUT请求?
我想对URL发出PUT请求,但当输出显示状态代码为405时,这意味着对URL的请求不是PUTIos 如何在NSURLSession中发出PUT请求?,ios,objective-c,nsurlsession,put,Ios,Objective C,Nsurlsession,Put,我想对URL发出PUT请求,但当输出显示状态代码为405时,这意味着对URL的请求不是PUT NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject deleg
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 = @"PUT";
[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];
有人能指出我哪里出了问题吗?从过去几个小时以来,我一直在读很多关于这个问题的书,但我没能弄明白。请不要将此标记为重复,因为之前的op没有添加正文,这与我的代码不同。另外,上面提到的URL接受任何数据作为主体,所以我想我设置数据的目的是不相关的
编辑(回答):
昨天撞了我的头之后,我的一个大四学生帮我解决了这个问题,希望这能帮助别人。数据任务需要与请求对象一起提供,而不是与URL一起提供,这就是它在Charles web调试工具中始终显示“GET”的原因。代码应如下所示:
NSURLSessionDataTask * dataTask = [defaultSession dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
// code
}];
请检查下面的链接:-我希望这对你有用。我替换了NSMutableData*postbody=[NSMutableData];使用NSData*postbody=[@“name=testname&suggestion=testing123”数据使用编码:NSUTF8StringEncoding];还是不走运。我已经查过那个链接了。还是谢谢你。
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
request.HTTPMethod = @"PUT";