gpt4 book ai didi

objective-c - AFNetworking 获取 XML 解析错误的数据

转载 作者:数据小太阳 更新时间:2023-10-29 02:26:54 26 4
gpt4 key购买 nike

这是我的 AFHTTPClient 单例:

+ (API *)sharedInstance
{
static API *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[API alloc] initWithBaseURL:[NSURL URLWithString:kAPIHost]];
[sharedInstance setParameterEncoding:AFJSONParameterEncoding];
[sharedInstance registerHTTPOperationClass:[AFXMLRequestOperation class]];
[sharedInstance setDefaultHeader:@"Accept" value:@"application/rss+xml"];
});

return sharedInstance;
}

和同一个类中的方法(AFHTTPClient):

- (void)requestXMLDataCompletion:(JSONResponseBlock)completionBlock
{
NSMutableURLRequest *apiRequest = [self requestWithMethod:@"GET" path:kAPIPath parameters:nil];

AFXMLRequestOperation *operation = [[AFXMLRequestOperation alloc] initWithRequest:apiRequest];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
// success
completionBlock(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// failure
completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}];

[operation start];
}

当我调用此函数从 RSS 获取 XML 时,出现此错误:

error = "Expected content type {(\n    \"application/xml\",\n    \"text/xml\"\n)}, got application/rss+xml";

问题:

  1. 实现单例的整个概念是否良好,我是否需要任何更改?

  2. 如果整个概念是错误的,有什么建议吗?

  3. 为什么会出现此错误?

谢谢。

最佳答案

  • 单例的概念

    单例通常被称为设计模式。通常一个单例是一个类并且行为与任何其他类完全一样,唯一的异常(exception)是单例的任何实例都引用了相同的对象数据。这意味着单例类的任何实例都是实际上都是同一个实例。

可以查看Singleton Pattern获取更多信息和示例代码以强制执行单例的使用方式。

  • 如果整个概念是错误的,有什么建议吗?

    我建议您将 Singleton 用于 AFNetworking,因为您将拥有只有一个实例。

  • 你的错误

    您收到的错误是因为 AFNetworking 请求希望 header 内容类型为 "application/xml""text/xml"

尝试更改此代码:

[self registerHTTPOperationClass:[AFXMLRequestOperation class]]; 

[self registerHTTPOperationClass:[AFHTTPRequestOperation class]]; 

关于objective-c - AFNetworking 获取 XML 解析错误的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16779237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com