繁体   English   中英

如何在iOS中对包含图片(nsdata)的URL发出PUT请求

[英]How do I make a PUT request to a URL with an image (nsdata) in iOS

我已经挠头好几个小时了。 我不断在完成处理程序上获得连接超时。 这似乎应该很容易...

有人可以帮忙吗?

NSMutableURLRequest *uploadRequest = [[NSMutableURLRequest alloc] init];
[uploadRequest setURL:[NSURL URLWithString:PUTURL]];
uploadRequest.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
[uploadRequest setHTTPMethod:@"PUT"];
[uploadRequest setHTTPBody:imageDataToUpload];
[uploadRequest setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[self.assetDataToUpload length]] forHTTPHeaderField:@"Content-Length"];
[uploadRequest setValue:@"image/jpeg" forHTTPHeaderField:@"Content-Type"];

NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:uploadRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
                        NSLog(@"YAY COMPLETED");
                        self.didUpload = true;
                        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
                    }];
[dataTask resume];

另外,我应该提到我的PUTURL是从s3生成的presignedurl。 我使用https://www.hurl.it/测试了一个虚拟的PUT请求,该请求有效。 因此,似乎表明我的代码有问题。

终于想通了! 这段代码没有错。 在获取presignedurl的服务器端,我忘记包含ContentType。 显然,这很重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM