小工具      在线工具  汉语词典  css  js  c++  java

需求:使用AFNetworking下载图片并显示,或者请求json数据

最新播客AFNetworking,然后想下载一张图片

然后我发现我无法下载

错误一:

Xcode控制台打印出如下错误:

NSErrorFailingURLKey = "https://raw.githubusercontent.com/robinson911/robinson911.github.io/master/img/contact-bg.jpg”;

NSLocalizedDescription = "请求失败:不可接受的内容类型:image/jpeg";

错误分析:

content-type:是请求/响应数据的格式类型

从上面的提示我们可以看出,需要设置的是请求的Content-Type。

解决办法:设置数据格式类型

[经理。响应序列化器设置可接受的内容类型:[NS系列设置对象:@“图像/png”,@“图像/jpeg”,]];


重建后发现图片仍然无法加载。

Xcode控制台打印出如下错误:

NSDebugDescription = "JSON 文本不以数组或对象开头,并且未设置允许片段的选项。";

}----Error Domain=NSCocoaErrorDomain Code=3840 “JSON 文本不以数组或对象开头,并且未设置允许片段的选项。” UserInfo={NSDebugDescription=JSON 文本不以数组或对象开头,并且未设置允许片段的选项。选项。 }

然后查看源码发现:

默认情况下,afnetwork网络请求返回json数据格式的数据。因此,客户端也会使用json作为默认格式。如果返回的数据是非json标准格式,就会出现上述错误。

只需在发送请求之前添加以下内容:manager.responseSerializer = [AFHTTPResponseSerializer序列化器]

这个问题是可以解决的。

然后再次重建,发现镜像加载正常。

通过request编译图片的源码如下:

- (void)requestNetData:(NSString*)url
{
    NSSet *ljSet = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"text/html", @"text/plain",@"application/xml",@"text/xml",@"image/png",@"image/jpeg",nil];
    AFHTTPSessionManager *manager =[AFHTTPSessionManager manager];
    manager.requestSerializer = [AFHTTPRequestSerializer serializer];
    //manager.requestSerializer = [AFJSONRequestSerializer serializer];
    
    //manager.responseSerializer = [AFJSONResponseSerializer serializer];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manager.responseSerializer setAcceptableContentTypes:ljSet];
    
    [manager GET:url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
        CHDebugLog(@"totalUnitCount:%lld---completedUnitCount:%lld",downloadProgress.totalUnitCount,downloadProgress.completedUnitCount);
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //CHDebugLog(@"%@",responseObject);
        
        if ([url rangeOfString:@"png"].location != NSNotFound || [url rangeOfString:@"jpeg"].location != NSNotFound || [url rangeOfString:@"jpg"].location != NSNotFound) {
            dispatchToMain(^{
                UIImage *image = [UIImage imageWithData:responseObject];
                self.LJImageView.image = image;
            });
        }
        else if ([url rangeOfString:@"json"].location != NSNotFound)
        {
            /*NSError *error = nil;
              1.需要将data转化为json
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:&error];
            CHDebugLog(@"print json data----%@",dict);
            */
            //2.初始化为 manager.responseSerializer = [AFJSONResponseSerializer serializer]; 来帮助你接收json数据
            CHDebugLog(@"print json data----%@",responseObject);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        CHDebugLog(@"%@----%@",error.userInfo,error);
    }];
}


. . .

相关推荐

额外说明

您有 17 项未应用的迁移。在您应用……之前,您的项目可能无法正常运行

在运行django项目命令:python manage.py runserver时候,提示以下报错信息。 You have 17 unapplied migration(s). Your project may not work properly unt

额外说明

SpringBoot 配置⽂件

SpringBoot 配置⽂件 1. 配置文件的作用 2. .配置⽂件的格式 2.1 properties 2.1.1 基本语法 2.1.2 读取配置⽂件 2.2 yml 2.2.1 概念 2.2.2 基本语法 2.2.3 配置对象 2.2.4 配置集合

额外说明

Python爬虫 随机请求头

user_agent = [ "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1

额外说明

详细描述Error和Exception(运行期和编译期)的区别

一、 异常机制的概述 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 程序错误分为三种:1.编译错误;2.运行时错误;3.逻辑错误。 (1)编译

额外说明

JWT的Token认证机制

一、什么是JWT JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用 户和服务器之间传递安全可靠的信息。 JWT组成 一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。 头部(Header) 头部用

额外说明

【Python 随练】判断101到200的素数

题目: 判断 101-200 之间有多少个素数,并输出所有素数。 简介: 在本篇博客中,我们将解决一个常见的问题:判断101到200之间的素数,并输出所有素数的列表。我们将给出问题的解析,并提供一个完整的代码示例来实现判断和输出素数的功能。 问题分析:

额外说明

Redis之发布订阅

文章目录 前言 一、概述 二、命令和实践 命令 实践 三、原理 总结 前言 Redis 发布订阅。 一、概述 Redis 发布订阅(pub / sub)是一种消息通信模式。 发送者(pub)发送消息,订阅者(sub)接收消息。 Redis 客户端可以订阅

额外说明

Postman使用

基础功能使用说明 环境地址设置 在设置里面设置环境对应的公共链接地址 在请求时通过{ {}}设置对应的环境变量发起请求 并发测试 点击runner 选择对应的接口设置并发请求数量和请求间隔,点击run开始并发请求 并发请求过程 postman主要还是ht

额外说明

MySQL查询某个表中的所有字段并通过逗号分隔连接

想多造一些测试数据,表中字段又多一个个敲很麻烦,导出表中部分字段数据又不想导出ID字段(因为ID字段是自增的,导出后再插入会报唯一性错误),select * 查出来又是所有的字段。 可以通过如下SQL查询表中所有字段通过逗号连接,然后复制出来进行sele

额外说明

【RabbitMq学习day1】spring boot简单整合RabbitMq示例

一、RabbitMq介绍 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯

ads via 小工具