由于最近忙着开发项目,好几天没来写博客了。我把最近遇到的一个小bug来和大家分享一下。

最近iOS开发中,客户端需要使用http POST去进行请求服务器。需要发送的是XML格式的,当然接收的也是XML。我们准备使用的是AFNetworking来实现。关于AFnetworking的使用以及Cocoapods包管理,请参考我的其他几篇博客:《iOS项目开发实战——使用AFNetworking进行Http Get请求》,《查看进行AFNetworking请求时的头部信息》,《iOS包管理工具Cocoapods的安装与使用》。我进行请求的代码实现如下:

-(void)query05{AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];NSString *str = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>""<root>""<command_type>****</command_type>""<id>***</id>""<action>***</action>""<value>***</value>""</root>";NSDictionary *parameters = @{@"test":str};[manager POST:@"http://***.php"parameters:parameterssuccess:^(AFHTTPRequestOperation *operation,id responseObject){NSLog(@"Success: %@", responseObject);}failure:^(AFHTTPRequestOperation *operation,NSError *error){NSLog(@"Error: %@", error);}];
}

但是当运行程序后,出现如何错误:

Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}

如图:



     这个bug的确很诡异,我根本没有做任何关于JSON的操作,却给我报了一个JSON的错。最后查了很多资料,解决方案如下:主要是增加了几行代码:

- (void)query05{//增加这几行代码;AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];[securityPolicy setAllowInvalidCertificates:YES];AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//这里进行设置;[manager setSecurityPolicy:securityPolicy];manager.responseSerializer = [AFHTTPResponseSerializer serializer];NSString *str = @"<?xml version=\"1.0\" encoding=\"utf-8\"?>""<root>""<command_type>***</command_type>""<id>***</id>""<action>***</action>""<value>***</value>""</root>";NSDictionary *parameters = @{@"test" : str};[manager POST:@"http://***.php"parameters:parameterssuccess:^(AFHTTPRequestOperation *operation,id responseObject){NSString *string = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];NSLog(@"成功: %@", string);}failure:^(AFHTTPRequestOperation *operation,NSError *error){NSLog(@"失败: %@", error);}];
}


通过以上的修改,就能成功的获得服务器的数据了。



github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

iOS开发Post请求错误:Error Domain=NSCocoaErrorDomain Code=3840 JSON text did not start with array or ...相关推荐

  1. Error Domain=NSCocoaErrorDomain Code=3840 JSON text did not start with array or object and option

    数据请求失败 报错   Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or ob ...

  2. iOS json 解析遇到error: Error Domain=NSCocoaErrorDomain Code=3840 quot;The operation couldn’t be comple

    Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn't be completed. (Cocoa error 38 ...

  3. Error Domain=NSCocoaErrorDomain Code=3840 The operation couldn’t be completed. (Cocoa error 3840.)

    AF解析json出错: Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn't be completed. (Co ...

  4. iOS Error Domain=NSCocoaErrorDomain Code=4099

    Xcode 控制台报错: [Client] Sending selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 " ...

  5. DeviceToken 获取失败,原因:Error Domain=NSCocoaErrorDomain Code=3000 未找到应用程序的“aps-environment”的授权字符串......

    apns -> 注册推送功能时发生错误, 错误信息: Error Domain=NSCocoaErrorDomain Code=3000 "未找到应用程序的"aps-envi ...

  6. 七牛报错error: Error Domain=NSCocoaErrorDomain Code=256 “未能打开该文件。

    搞了一个项目,发现iOS11.2 可以上传视频成功,但是iOS13到14.0都不成功.debug发现这个问题. QiNiuLogic.m:93 QiNiuLogic <QNResponseInf ...

  7. 报错: Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099

    报错: Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 问题原因: ...

  8. xcode 报Remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 The connec...

    Xcode 运行真机正常 运行模拟器报"Remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=40 ...

  9. 「IOS 网络踩坑」错误 Error Domain=NSURLErrorDomain Code=-1004

    一.原因 两种可能 1.1 网络原因 请检查你的网络是否连接 建议使用浏览器搜索网页,因为 App 可能自带缓存 1.2 使用 LocalHost 本地测试时使用 LocalHost 上线时可能报错 ...

最新文章

  1. mysqldump备份数据库
  2. python分配buffer_Node.js中的buffer如何和python中的buffer相对应
  3. NYOJ 837 Wythoff Game
  4. android查看wifi是否双频,Android判断wifi是5G还是2.4G
  5. leetcode214. 最短回文串
  6. 嵌入式编程要不要学数据结构_少儿编程要不要学?其实国家早就给出了答案……...
  7. 电脑打开微信小程序_终于可以在电脑上玩转微信小程序啦
  8. php基础:查询程序运行时间并且把科学计数法转换成正常数字
  9. 使用SharePoint 2010 母版页
  10. centos7安装详细图解_开封温包规格,电热执行器安装详细图解
  11. 2020.02.04 14:30
  12. 新浪的动态策略灰度发布系统:ABTestingGateway
  13. kotlin面向对象实战~
  14. 基于cat12和SPM12进行VBMSBM数据分析笔记1——数据预处理
  15. 同步发电机转子的转动惯量与运动方程(一) 基本物理概念
  16. vi编辑器的使用   快捷键
  17. 嵌入式linux时间同步,ntpdate的交叉编译
  18. vFlat Scan – 可能是最快捷的纸质书扫描应用,一次 2页,居然还能移除手指头[iOS/Android]
  19. stm32-mini-LCD液晶显示实验
  20. 计算机会计和传统手工会计的区别,简要比较手工会计和计算机数据处理方式的区别...

热门文章

  1. 布局——线性布局、相对布局
  2. U盘制作-BGA焊接练习
  3. Python 文件打开读取写入方法
  4. Ubuntu开发环境_TLP电源管理模块、禁用笔记本触摸板
  5. 命令行连接MySQL报错:mysql: [Warning] Using a password on the command line interface can be insecure
  6. i春秋-2016-2017年信息安全竞赛 Web writeup 补题 By Assassin
  7. iftop输出详解和命令详解
  8. Linux下C语言串口应用编程
  9. 多个域名和IP指向带www主域名
  10. GitHub忘记用户名和密码如何找回