美文网首页iOS Developer
Hessian服务器https接口请求

Hessian服务器https接口请求

作者: 灰客 | 来源:发表于2017-04-27 10:04 被阅读0次

Hessian服务器的OC部分代码框架采用的是http接口和NSConnection来做数据请求,在2017年苹果要求的https请求上,是无法做到数据请求的,只能走http;
但是需要实现https怎么办呢,我想起以前的NSConnection做https就是加一个对证书里面的默认允许的方法,但是他总是不走这个方法去实现,我在框架包里面找到了这个文件:
CWDistantHessianObject+Private文件
的这个方法:-(NSData)sendRequestWithPostData:(NSData)postData;

这个方法,是该框架http请求数据的核心方法,但是里面的实现是使用的NSConnection的,我想要添加那个方法,不能被调用

所以我写了一个DJConnection继承自NSConnection的,来实现,但是依然不行

怎么办呢!

我找到了NSURLConnectionDataDelegate,对他做了继承并封装了他的
didReceiveAuthenticationChallenge
canAuthenticateAgainstProtectionSpace
didReceiveData
connectionDidFinishLoading

这4个方法,让CWDistantHessianObject+Private文件
的这个方法:-(NSData)sendRequestWithPostData:(NSData)postData;

里面的DJConnectionDelegate *obj = [[DJConnectionDelegate alloc]init];

    [[NSURLConnection alloc] initWithRequest:request delegate:obj];

使用我的delegate就可以了

当然了,在这里获取参数成功时,心情很激动,昨天晚上的班没有白加,但是这是在断点打着的情况下,我做到了通过https把数据获取成功,但是还是遇到了一个崩溃

我打了全局断点还是没有任何提示 只是在打印中出现了:
-[OS_dispatch_data release]: message sent to deallocated instance 0x6080000b8ba0
Message from debugger: Terminated due to signal 9
是红色的 EXC_BAD_ACCESS问题
查资料发现,叫做使用了已经被提前释放的对象的方法
我找了下我自己写的代码,发现那个data我是在最后才做的释放,不可能提前释放了,而我属于长期使用ARC的新人开发者,并没有怎么使用过MRC,用熟话说叫做:用MRC就是作,NO作NO DIE,但是我不信,我就是去改了这个东西了,我对比了原方法(做http部分代码)发现他在做else if (returnResponse != nil) {
if ([returnResponse statusCode] == 200) {
[responseData retain];
}
的时候,对获取到的responseData做了retain引用计数+1,而我的并没有做这个事情,而且红色崩溃也是在我做return responseData ? [responseData autorelease] : nil;之后,所以我把这句代码加上去了

文章为本人原创,转载请说明出处
文中不足之处,敬请斧正,也希望依然在使用Hessian来做服务器的iOS同行能多多交流,后续本人可能会对Hessian原框架部分代码进行版本升级,使用NSSession来做数据请求。
****************************************Perfect*****************************************

查看资料:
附带iOS内存调试讲解:http://www.cnblogs.com/ljios/p/5088947.html

相关文章

  • Hessian服务器https接口请求

    Hessian服务器的OC部分代码框架采用的是http接口和NSConnection来做数据请求,在2017年苹果...

  • 编程问题

    1.hessian方法重载导致报错 客户端B 调用 服务端A 的hessian接口,hessian正常启动,浏览器...

  • Postman请求Https接口

    单向认证 像平常一样访问就行,无需做任何处理,只需要把http://变成https:// 双向认证 因此我们接下来...

  • React 获取数据 axios插件 fetch-jsonp插件

    react获取服务器APi接口的数据: 远程测试API接口: get请求: jsonp请求地址:

  • IOS HTTPS 部署问题 NSURLSession/NSUR

    从2017开始,IOS请求的接口都必须是https的,就算图片也必须是https的,所以服务器端需要配置https...

  • 服务器状态

    获得服务器内存状态服务器请求次数接口请求次数数据库阻塞情况

  • iOS获取内网IP地址

    备注:外网获取ip是通过请求服务器的接口获取,例如淘宝的接口

  • java序列化之Hessian

    一、Hessian序列化的前提 Hessian要实现序列化,前提是被序列化的类得实现Serializable接口。...

  • 测试面试题二

    接口文档包含哪些内容? 接口的协议(http https),协议的版本 接口的功能 请求方法:请求方法,get和p...

  • 接口文档

    1.1.1协议说明 服务器端同客户端的数据交互采取HTTP/HTTPS为基础的REST接口方式。REST请求仅支持...

网友评论

    本文标题:Hessian服务器https接口请求

    本文链接:https://www.haomeiwen.com/subject/nldgzttx.html