【问题标题】:setup AFNetworking 3.x singleton Request and Response serialization设置 AFNetworking 3.x 单例请求和响应序列化
【发布时间】:2016-12-02 07:00:42
【问题描述】:

您好,我正在使用 AFNetworking 3.x。我已经为网络 api 构建了一个单例

+ (ApiClient *)sharedInstance {
    static ApiClient *sharedInstance = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
        sharedInstance = [[self alloc] initWithBaseURL:[NSURL URLWithString:SINGPOST_BASE_URL] sessionConfiguration:sessionConfiguration];

    return sharedInstance;
}

- (id)initWithBaseURL:(NSURL *)url
{
    if ((self = [super initWithBaseURL:url])) {
        AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
        [serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    }

    return self;
}

我想在使用单例时设置请求和响应序列化。我们该怎么做呢

我写这些代码不断出错。非常感谢任何帮助。谢谢

[[[ApiClient sharedInstance]requestSerializer = [AFHTTPRequestSerializer] requestWithMethod:POST_METHOD URLString:urlString parameters:xml error:nil]];

我的响应序列化

ApiClient sharedInstance].responseSerializer.acceptableContentTypes = [[ApiClient sharedInstance].responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];

【问题讨论】:

  • 您好更新的问题与错误。设置请求和响应序列化的正确方法是什么?
  • 嗨,ApiClient 已经从 AFHTTPSessionManager 继承

标签: ios objective-c singleton afnetworking


【解决方案1】:

您需要将您的电话 [AFHTTPRequestSerializer requestWithMethod..] 更改为

[[AFHTTPRequestSerializer serializer] requestWithMethod:POST_METHOD URLString:urlString parameters:xml error:nil];

AFHTTPRequestSerializer 没有类方法requestWithMethod 它需要先创建一个实例,然后调用requestWithMethod

您的代码将如下所示:

[[ApiClient sharedInstance] requestSerializer] = [[AFHTTPRequestSerializer serializer] requestWithMethod:POST_METHOD URLString:urlString parameters:xml error:nil];

【讨论】:

  • 非常感谢。但它适用于单例 ApiClient 吗?
  • 谢谢,所以我将请求序列化更改为 [[AFHTTPRequestSerializer serializer] requestWithMethod:POST_METHOD URLString:urlString parameters:xml error:nil]?;。响应序列化怎么样,这样对吗?
  • 不,你只需要[[ApiClient sharedInstance].responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
  • 谢谢,我们能否将这两个包含在单例的初始化中,因为每次都有大约 50 个类似的设置需要这两个设置
  • 是的,如果您有所有响应 acceptableContentTypes text/html 并且您的所有请求都具有 POST_METHOD 类型,则可以
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多