我正在尝试使用AFNetworking发布XML-RPC请求。 AFNetworking库仅提供表单数据的限制(throttleBandwidthWithPacketSize:delay:
上的AFMultipartFormData
)。
如何限制常规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]);
}];
最佳答案
AFHTTPClient -multipartFormRequestWithMethod:...
是采用带有代理对象的块的方法,该代理对象为关联的请求构造自定义输入流。 throttleBandwidthWithPacketSize
是该块代理对象上的一种方法,用于防止3G网络上的缓冲区溢出,并且仅在发布二进制数据(如图像)时才真正需要。
使用setHTTPBody:
会覆盖使用-multipartFormRequestWithMethod:
完成的所有操作,因为它将NSURLRequest
HTTP主体替换为NSData
构造的输入流。除非您确实需要将此请求作为多部分请求发送(即带有图片/文件附件),否则您应该这样做。
如果确实需要多部分,请在构造函数块中使用-appendPartWithFormData:name:。
关于ios - 用AFNetworking限制POST,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15575109/