标签: mknetworkkit

MKNetworkKit和AFNetworking有什么区别?

我正在对这两个网络框架进行一些测试:MKNetworkKit和AFNetworking.而且我发现看到两个库之间的差异并不容易.两者之间有哪些主要区别?

macos networking ios afnetworking mknetworkkit

23
推荐指数
1
解决办法
5057
查看次数

当可达性改变时,MKNetworkKit操作不会恢复/完成

我是新手MKNetworkKit,但我已经能够将它添加到我的项目中,除非处理可达性更改,否则它完全正常工作.

情况如下:

  1. 我禁用WiFi并运行应用程序.
  2. 即使没有可达性,我POST也通过创建一个MKNetworkOperationfrom我的MKNetworkEngine子类来请求(使用)一些数据.在请求数据之前,操作被设置为freezable(根据Mugunth Kumar的文档).
  3. 在启用WiFi后,调用checkAndRestoreFrozenOperationsin MKNetworkEngine并且它检测到有一个挂起的操作(创建的没有可达性),它尝试入队.
  4. 之后,我的onCompletion块永远不会被调用.

有什么我不明白冻结操作+可达性MKNetworkKit吗?冻结是否仅适用于请求开始后可达性发生变化的操作?或者我应该实现自己的可达性更改块?

这是我的MKNetworkEngine子类中的代码,它创建操作并启动请求.请注意,不相关的代码已被禁止.

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:@"value" forKey:@"param"];
MKNetworkOperation *op = [self operationWithPath:MYPATH
                                          params:params
                                      httpMethod:@"POST"];
[op setFreezable:YES];

[op onCompletion:^(MKNetworkOperation *completedOperation) {
   // ...
   // Here is where I process response and send the result to my completion block
   // It's called when WiFi is available, but not called otherwise.
   // ... …
Run Code Online (Sandbox Code Playgroud)

network-programming ios mknetworkkit mknetworkengine

6
推荐指数
1
解决办法
2172
查看次数

iOS应用SSL .p12身份验证 - 证书错误(-9825)

更新

编辑2/6/14:

我创建了一个本地Apache Tomcat服务器来测试带有证书身份验证的SSL.我成功了!使用下面的两种方法,一切都按预期工作.(MKNetworkKit和自定义代码).虽然这确实告诉我我的代码正在运行,但我的原始问题仍未解决.我更新了问题的标题,以更具体地反映问题.有谁知道SAP Portal是否需要特殊设置来接受来自iOS应用程序的证书?请记住,在将CA和.p12导入共享密钥链后,我能够使用Safari移动设备成功进行身份验证,我只是在代码中失败(我现在知道代码可以工作,而不是使用门户网站).



我正在创建一个非常简单的iOS7 Cordova 3.2应用程序,其中包含一个自定义插件,通过仅提供.p12证书进行身份验证(无需基本身份验证或其他用户凭据)从SSL Web服务获取数据.我在物理iPad(没有模拟器)上执行所有测试.Web服务使用自签名证书存在于开发SAP NetWeaver门户框中.目前,我将服务器的CA导入iOS钥匙串以避免证书信任错误.出于测试目的,我的.p12证书在应用程序内部捆绑在mainBundle的根目录中.

尝试连接到Web服务时,我在控制台中收到以下错误:

CFNetwork SSLHandshake failed (-9825)
NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9825)
Error Domain=NSURLErrorDomain Code=-1205 "The server “myhostremoved.com” did not accept the certificate." UserInfo=0x14e99000 {NSErrorFailingURLStringKey=https://myhostremoved.com/sslwebservice/, NSErrorFailingURLKey=https://myhostremoved.com/sslwebservice/, NSLocalizedDescription=The server “myhostremoved.com” did not accept the certificate., NSUnderlyingError=0x14d9b1d0 "The server “myhostremoved.com” did not accept the certificate.", NSURLErrorFailingURLPeerTrustErrorKey=<SecTrustRef: 0x14d94720>}
Run Code Online (Sandbox Code Playgroud)

根据Apple的文档站点,-9825错误引用了错误的证书.

有很多关于SO的问题与我想要做的事情有关,但没有一个与我所看到的错误有关.我以两种不同的方式处理代码的开发.


首先,我尝试使用已经在SO上的代码,使其适应我的用例.见下面的代码:

- (void)startConnection:(CDVInvokedUrlCommand*)command {
    NSDictionary *options = [command.arguments objectAtIndex:0];
    NSURL *serverURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@", [options objectForKey:@"host"]]];//hostname provided by Cordova plugin, …
Run Code Online (Sandbox Code Playgroud)

ssl objective-c ios cordova mknetworkkit

5
推荐指数
1
解决办法
4505
查看次数

iOS 7中kSecTrustResultConfirm的替代方案是什么?

我们的旧应用程序使用MKNetworkKit和MKNetworkOperation.

现在在iOS 7下kSecTrustResultConfirm已弃用.在MKNetworkOperation中,有以下代码:

 else if(result == kSecTrustResultConfirm) { // DEPRECATED

          if(self.shouldContinueWithInvalidCertificate) {

            // Cert not trusted, but user is OK with that
            DLog(@"Certificate is not trusted, but self.shouldContinueWithInvalidCertificate is YES");
            [challenge.sender useCredential:[NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust] forAuthenticationChallenge:challenge];
          } else {

            DLog(@"Certificate is not trusted, continuing without credentials. Might result in 401 Unauthorized");
            [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
          }
        }
Run Code Online (Sandbox Code Playgroud)

有更换kSecTrustResultConfirm吗?

security iphone ios mknetworkkit mknetworkengine

5
推荐指数
1
解决办法
1514
查看次数

MKNetworkKit缓存不起作用

我遇到了MKNetworkKit缓存的非常不寻常的问题.简单来说,问题是"它不起作用"..!

我创建了一个有问题的简单测试项目.该项目什么都不做,但只是向http://where.yahooapis.com/提出简单的GET请求,以获取城市名称的地址或信息.响应,应该在第一次运行时被追逐,并且从第二次调用完成处理程序两次,一次使用缓存响应,再一次使用获取的响应.正如您在下面看到的,它取自http://blog.mugunthkumar.com/coding/ios-tutorial-image-cache-and-loading-thumbnails-using-mknetworkkit/

如果您是第二次拨打电话,MKNetworkKit会使用缓存数据调用SAME完成处理程序.当网络连接正常时,MKNetworkKit会两次调用完成处理程序.首先使用缓存数据,然后在从服务器获取最新数据之后再次使用.

好吧,不寻常的是,我运行应用程序,它没有缓存,我再次运行应用程序,它再次没有缓存,经过一些随机运行突然缓存开始工作.我删除了应用程序并再次运行它,缓存不会工作,直到一些随机运行和问题重复..!

仅供参考,我使用了从GIT下载的最新MKNetworkkit .

我不确定我的代码是否有问题,或者是MKNetworkKit本身的错误.所以请仔细阅读代码,并告诉我它是否是导致此问题的MKNetworkKit.

以下是下载示例项目的链接[https://www.box.com/s/tsfw3z0avpti051xbyhv] 4

预先感谢.

ios ios5 ios6 mknetworkkit mknetworkengine

1
推荐指数
1
解决办法
1963
查看次数