簡體   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