我正在尝试使用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/

10-15 15:26