我目前正在研究 Xcode 7 beta 6
。我正在尝试向http://mySubdomain.herokuapp.com发送“删除”请求
我收到的错误是:
由于不安全,App Transport
Security阻止了明文HTTP(http://)资源加载。可以通过应用程序的Info.plist文件配置临时异常。
进行API调用时出错:Error Domain = NSURLErrorDomain代码=
-1022无法加载资源,因为“应用程序传输安全性”策略要求使用安全连接。
NSLocalizedDescription =无法加载资源,因为应用程序传输安全策略需要使用安全连接。,NSUnderlyingError =
0x796f7ef0 {Error Domain = kCFErrorDomainCFNetwork Code = -1022“(null)”}}
在我实际的API调用中,我放置了“ https”而不是“ http”,这实际上适用于我的POST请求。但是DELETE请求会引发上述错误。
我在这里看到了涉及pList文件的解决方案,但是没有一个对我有用。我在下面列出了我的尝试。
第一次尝试:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
第二次尝试:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>herokuapp.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
最后,我什至将所有这些临时键都放入:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>herokuapp.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSTemporaryThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSTemporaryThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
<key>NSTemporaryRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
一切都没有运气!我总是得到同样的错误。DELETE请求的格式正确,因为当我从Postman手动进行处理时,得到了所需的结果。
这是我实际的API调用方法的外观,以防万一此处可能存在问题:
class func makeDELETEALLRequest(completion: (error:Bool) -> Void) {
let session = NSURLSession.sharedSession()
let url = NSURL(string:"https://mysubdomain.herokuapp.com/42kh24kh2kj2g24/clean")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "DELETE"
let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if (error != nil) {
print("Error making API call: \(error!)")
completion(error: true)
} else {
let HTTPResponse = response as! NSHTTPURLResponse
let statusCode = HTTPResponse.statusCode
if (statusCode == 200){
print("Successfully deleted!")
completion(error: false)
} else {
print("Different status code: \(statusCode)")
completion(error: true)
}
}
}
task.resume()
}
再一次,我正在使用 Xcode 7 beta 6 。
关于
我选择的答案我选择为正确的答案对我来说是正确的,因为我对项目中的错误pList文件进行了所有这些更改,并且该答案是唯一解决可能性的方法。其他答案提供的解决方案没有错,因此遇到此问题的其他任何人都应该尝试一下,因为它们是有效的。希望这对遇到类似问题的人有所帮助。
在升级到xCode 7.0之后,我也无法覆盖App Transport
Security,并尝试了无济于事的同类解决方案。走了一段时间之后,我注意到我已经对“
MyAppName测试”的“支持文件”下的Info.plist进行了更改,而不是项目本身中的内容。我项目中的Supporting
Files文件夹没有展开,因此我什至没有注意到其中的Info.plist。
我敢肯定,这是典型的业余错误,但是在Project
Navigator中只有两行之隔,直到我注意到两者之间的区别,这让我感到沮丧。以为我会提到它,以防万一您遇到同样的问题。
6.6 测试 测试多 flavor 工程和测试普通的工程差不多。 androidTest sourceset 对所有的 flavor 来说是通用的测试,而每个 flavor 也可以有他们自己的测试。 正如前面所提到的,每一个 flavor 都可以创建自己的测试 sourceSets : android.sourceSets.androidTestFlavor1 ,位置是src/androidTes
有几行代码不会在操场上出现。如果你把代码弄乱了,有时它就会出现,把代码移来移去或者放在其他地方。还有人吗?有修补方法吗?这只是一个测试版的问题吗?
3.5 一志愿测开一面 30min 纯聊天,面试官好像有点人来疯的感觉要么就是喝多了,整场面试的氛围非常热闹跟过年串门似的,技术问题一个都没问 自我介绍 介绍实习,着重让说了几个实习的时候用到的工具和框架 问我能不能提前实习,我说行,又问我会不会开车,我说有驾照 然后就开始给我介绍业务,不光介绍她部门的业务,连别的部门的也一起介绍了,她自己不清楚的还专门去其他部门叫人来给我解释,跟推销似的特别热情
测试 multi-flavors 项目与测试普通的项目相差无几。 androidTest 的 sourceSet 用于定义所有 flavor 共用的测试,但是每一个 flavor 也可以有它特有的测试。 正如前面提到的,每一个 flavor 都会创建自己的测试 sourceSet: android.sourceSets.androidTestFlavor1 位于 src/androidTestFl
相关改动 commit Revision change c0fc9f8cac7d923d1a06a7235d21e54919d3d42a D66598 增加优先级队列支持 ee3d9d614fd36e5ea07460228c670f40e434dbf4 D66823 修改转发模型,到每台机器都使用单独线程池和thrift Clinet 5e068156aefda275c926b90c50f8df0
我刚刚通过Flutter upgrade更新到Flutter verison 0.8.2并更新了依赖项,在media_query.dart中出现编译时错误。以下是版本信息: 以下是我的实际错误: