2013-03-22 2 views
0

Я пытаюсь использовать AFNetworking, чтобы отправить запрос XML-RPC. Библиотека AFNetworking предлагает только дросселирование данных формы (throttleBandwidthWithPacketSize:delay: на AFMultipartFormData).Дросселирование POST с AFNetworking

Как я могу нормально регулировать NSData POST-запросы?

Вот мой текущий код:

XMLRPCEncoder* encodObject = [[XMLRPCEncoder alloc] init]; 
[encodObject setMethod:function withParameters:[NSArray arrayWithArray:parametrs]]; 

NSMutableURLRequest *request = [afClient requestWithMethod:@"POST" 
                 path:path 
               parameters:Nil]; 

NSData* body = [[encodObject encode] dataUsingEncoding:NSUTF8StringEncoding]; 
[request setHTTPBody:bodyRequest]; 

AFHTTPRequestOperation* operationAf = 
    [[AFHTTPRequestOperation alloc] initWithRequest:request]; 

[operation setCompletionBlockWithSuccess: 
    ^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSString* response = operation.responseString; 
     NSLog(@"response %@,response"); 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error%@", [error localizedDescription]); 

    }]; 
+1

Хотите ли вы иметь задержку, вы хотите, чтобы ограничить размер пакета или вы хотите сделать то и другое? –

ответ

2

AFHTTPClient -multipartFormRequestWithMethod:... это метод, который принимает блок с прокси-объект, который строит пользовательский входной поток для соответствующего запроса. throttleBandwidthWithPacketSize - это метод на этом блочном прокси-объекте, который используется для предотвращения переполнения буфера по сетям 3G и действительно необходим при публикации двоичных данных, таких как изображения.

setHTTPBody: Использования переопределения ничего сделать с -multipartFormRequestWithMethod:, так как он заменяет входной поток, построенный для NSURLRequest с телом NSData HTTP. Вы должны просто сделать это, если вам действительно не нужно отправлять это как многостраничный запрос (т. Е. С вложениями изображений/файлов).

Если вам действительно нужен multipart, используйте -appendPartWithFormData:name: в блоке конструктора.

+0

да, но если я использую только [formData throttleBandwidthWithPacketSize: kAFUploadStream3GSavedPacketSize delay: kAFUploadStream3GSposedDelay]; и используйте setHTTPBody, что будет сделано дросселирование? – sharedMind

+0

Остановите копирование своих комментариев по закрытой проблеме GitHub. – mattt

+0

@mattt: Сначала ... извините, я не проверял все комментарии/проблемы в github. Это может быть обман, но, пожалуйста, дайте мне знать, как дросселировать, если не-multipart? Есть ли способ использовать так же просто, как в ASI (просто вызовите методы, и вы были сделаны)? –

0

Я думаю, что AFNetWorking не поддерживает дроссельный как ASIHttpRequest, его используют дросселирование только при передаче двоичного файла с multipartFormRequestWithMethod функции :)

Смежные вопросы