iOS 报错"NSErrorFailingURLKey"的解决

本文介绍了一种使用AFNetworking时遇到的“文本内容类型错误”问题,并给出了详细的解决方案。作者通过设置安全策略允许无效证书并通过修改响应序列化器接受的Content-Type解决了此问题。

错误打印如下

1 Error: Error Domain=com.alamofire.error.serialization.response Code=-1016 "Request failed: unacceptable content-type: text/plain" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x17423e700> { URL: http://114.112.104.149:20012/app/consult/create/quick } { status code: 200, headers {
2 "Content-Length" = 188;
3 Date = "Mon, 06 Mar 2017 07:16:35 GMT";
4 Expires = "Thu, 01 Jan 1970 00:00:00 GMT";
5 Server = "Jetty(9.3.10.v20160621)";
6 "Set-Cookie" = "JSESSIONID=1m6o3zh51yh5n131yev2ezd29h;Path=/app;HttpOnly";
7 } }, NSErrorFailingURLKey=http://114.112.104.149:20012/app/consult/create/quick, com.alamofire.serialization.response.error.data=<7b227479 7065223a 3131322c 22706179 4c6f6164 223a7b22 61757468 656e7469 63617465 55726c22 3a226874 74703a2f 2f313134 2e313132 2e313034 2e313439 3a323030 32302f63 61732f61 70704c6f 67696e3f 73657276 6963653d 30303030 30313561 38653162 64623265 2675726c 3d614852 3063446f 764c7a45 784e4334 784d5449 754d5441 304c6a45 304f546f 794d4441 784d6939

刚开始是认为AFN不支持"text/plain"样式, 但是自己在单例中已补充了这个类型, 补充的如下:

1  manager.responseSerializer.acceptableContentTypes =[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", @"text/plain", @"multipart/form-data", @"image/jpeg", @"image/png", @"application/octet-stream", nil];

不是这个的原因.

但是, 在服务器未认证之前会有这个问题(我们公司的项目要实时认证才能访问服务器), 认证之后就不存在这个问题了, 那一定是认证的时候做了些什么事情, 所以我就去看认证的时候干了些什么, 结果我发现再认证的时候我加了这几句代码:

1 //增加这几行代码;
2     AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
3     [securityPolicy setAllowInvalidCertificates:YES];
4     [manager setSecurityPolicy:securityPolicy];
5     manager.responseSerializer = [AFHTTPResponseSerializer serializer];

就不在报这个错误论了, OK!

要加上安全策略.

 

转载于:https://www.cnblogs.com/loveDodream-zzt/p/6527971.html

在微信小程序中播放 WAV 格式音频文件时,iOS 系统可能会出现报错或无声的情况,这通常与 iOS 的音频播放策略、格式兼容性及用户交互机制有关。以下是具体的解决方案和调试建议: 1. **确保音频播放在用户交互中触发** iOS 要求音频播放必须在用户的主动操作(如点击按钮)的回调中执行,否则音频将被系统静音。因此,应避免在异步回调或页面加载时自动播放音频。 示例代码: ```javascript // 在按钮点击事件中播放音频 playAudio() { const innerAudioContext = wx.createInnerAudioContext(); innerAudioContext.src = 'your-audio-file.wav'; innerAudioContext.play(); } ``` 2. **配置全局音频参数** 使用 `wx.setInnerAudioOption` 设置全局音频参数,以确保 `obeyMuteSwitch` 等配置生效。 示例代码: ```javascript wx.setInnerAudioOption({ obeyMuteSwitch: false, success: () => { console.log('音频设置成功'); }, fail: (err) => { console.error('音频设置失败', err); } }); ``` 3. **检查音频格式兼容性** 尽管 iOS 支持 WAV 格式,但某些编码方式可能不被兼容。建议将音频文件转换为 AAC 或 MP3 格式,以确保更好的兼容性。可以使用音频转换工具(如 FFmpeg)进行格式转换。 FFmpeg 示例命令: ```bash ffmpeg -i input.wav -acodec libmp3lame -ar 44100 -ab 128k output.mp3 ``` 4. **使用 `<audio>` 标签替代 `InnerAudioContext`** 如果 `InnerAudioContext` 仍无法正常播放,可以尝试使用 `<audio>` 标签来播放音频。虽然 `<audio>` 标签的样式较为简单,但可以通过自定义 UI 来改善外观。 示例代码: ```html <audio :src="audioUrl" @play="onPlay" @pause="onPause" @timeupdate="onTimeUpdate"></audio> ``` 5. **调试建议** - 在播放音频前检查音频文件是否损坏,确保音频文件可在其他设备或播放器中正常播放。 - 使用 `wx.getSystemInfoSync()` 获取设备信息,确认当前设备是否为 iOS,并根据设备类型进行差异化处理。 - 在控制台输出日志,检查是否有其他错误信息干扰音频播放。 示例代码: ```javascript const systemInfo = wx.getSystemInfoSync(); console.log('设备信息', systemInfo); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值