0

サーバーにリクエストを投稿したい。NSURLSessionDataTask を使用している場合は正常に動作しています。しかし、その下では、アプリケーション全体が AFNetworking を使用しているため、AFNetworking を使用する必要があります。しかし、 AFHTTPSessionManager で POST メソッドを使用して同じサービスにアクセスしようとすると、リクエストのタイムアウトが発生します。

以下は両方のコードです。

NSError *error;

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:nil delegateQueue:nil];
NSURL *url = [NSURL URLWithString:@"BASE URL"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:60.0];

[request addValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[request addValue:@"application/json" forHTTPHeaderField:@"Accept"];

[request setHTTPMethod:@"POST"];

NSString *postString = @"1";

NSData *data = [postString dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];


NSURLSessionDataTask *postDataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    NSString *str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}];

[postDataTask resume];

AFNetworking キットのバージョン:-

AFHTTPSessionManager *client = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:@"BASE URL"]];

NSDictionary *request = @{@"Content-Type":@"application/json",
                          @"Accept":@"application/json",
                          };


NSString *postString = @"1";

NSData *data = [postString dataUsingEncoding:NSUTF8StringEncoding];


[client POST:@"" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithHeaders:request body:data];
} success:^(NSURLSessionDataTask *task, id responseObject) {
    NSLog(@"%@",responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
    NSLog(@"%@",error);
}];

正しい方法で実装するのを手伝ってください。

4

1 に答える 1

0

独自のリクエストを作成し、その構成を AFURLSessionManager に渡してから、独自の NSURLSessionUploadTask オブジェクトを保持することで、この問題を解決しました。

ありがとう

于 2015-10-06T10:38:07.693 に答える