NSURLSessionを使用してhttp DELETEリクエストを作成しようとしていますが、完全には機能しません。サーバーはリソースを削除しますが、NSURLSessionメソッドのdataTaskWithRequest:completionHandler:は指定されたタイムアウトを待ってからタイムアウトエラーを返します。NSURLSessionでhttp DELETEリクエストを作成します。
NSURLConnectionは非推奨であるため、使用しません。
使用するNSURLSessionメソッドのうち、http GET:dataTaskWithUrl:completionHandlerで使用するメソッドと最も似ているため、dataTaskWithRequestを選択しました。 "uploadTask"と "downloadTask"で始まるメソッドはDELETEでは適切ではないようですが、上記のdataTaskメソッドと同じ方法でdownloadTaskWithRequest:completionHandler: 'worked'サーバーはリソースを削除しましたが、メソッドはタイムアウトエラーを返しました。
+(void)httpDelete: (NSString*)url completionHandler: (void(^)(id, NSError*))complete
{
NSURLSessionConfiguration *urlSessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSMutableDictionary* dictionaryAdditionalHeaders = [[NSMutableDictionary alloc] init];
NSString* stringBearerToken = @"...";
NSString* stringApiKey = @"...";
[dictionaryAdditionalHeaders setObject:stringBearerToken forKey:@"Authorization"];
[dictionaryAdditionalHeaders setObject:stringApiKey forKey:@"x-api-key"];
[dictionaryAdditionalHeaders setObject:@"application/json" forKey:@"Content-Type"];
[dictionaryAdditionalHeaders setObject:@0 forKey:@"Content-Length"];
[urlSessionConfiguration setHTTPAdditionalHeaders: dictionaryAdditionalHeaders];
NSURLSession *urlSession = [NSURLSession sessionWithConfiguration: urlSessionConfiguration delegate:nil delegateQueue:[NSOperationQueue mainQueue]];
NSMutableURLRequest* mutableUrlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url] cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5];
[mutableUrlRequest setHTTPMethod: @"DELETE"];
[[urlSession dataTaskWithRequest:mutableUrlRequest completionHandler: ^(NSData *data, NSURLResponse* response, NSError* error)
{
if(error != nil)
{
complete(response, error);
}
else
{
complete(response, nil);
}
}] resume];
}
ポストマン、直ちに204とDELETEコールリターンを使用する:ここ
コードです。
私は削除要求に対してNSURLSessionを正しく使用していますか?
タイムアウトエラーはバックエンドの問題です。あなたがレスポンスを得るか、失敗ブロックにヒットしない限り、私たちはどこに問題があるか決して決してありません! –