我只想测试我的本地Web服务调用以检查来自服务器的数据。我不知道在这里快速连接到本地主机我提供了我练习的示例代码
override func viewDidLoad() {
let request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:9000/api/v1/EntityList")!)
var theConnection: NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: true)!
}
func connection(connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: NSURLProtectionSpace) -> Bool {
return true
}
func connection(connection: NSURLConnection, canAuthenticateAgainstProtectionSpace protectionSpace: NSURLProtectionSpace) -> Bool {
return true
}
func connection(connection: NSURLConnection, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge) {
if (challenge.protectionSpace.host == "http://localhost:9000/api/v1/EntityList") {
challenge.sender!.useCredential(NSURLAuthenticationChallenge.autoContentAccessingProxy() as! NSURLCredential, forAuthenticationChallenge: challenge)
}
}
我的日志声明是
error=Optional(Error Domain=NSURLErrorDomain Code=-1004 "Could not connect to the server." UserInfo={NSUnderlyingError=0x7fc9705525a0 {Error Domain=kCFErrorDomainCFNetwork Code=-1004 "(null)" UserInfo= {_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}}, NSErrorFailingURLStringKey=http://localhost:9000/api/v1/EntityList, NSErrorFailingURLKey=http://localhost:9000/api/v1/EntityList, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=61, NSLocalizedDescription=Could not connect to the server.})
答案 0 :(得分:1)
错误的原因是API请求无法找到您提供的地址。
您提供的地址是
http://localhost:9000/api/v1/EntityList
您必须将其更改为
http://domainName.com/api/v1/EntityList
其中domainName.com应该是本地网络中服务器的名称或DNS。这可以是您的PC或其他能够充当Web服务器的PC。
您需要注意的另一件事是您必须绕过NSTranportSecurity令牌,因为iOS 9不支持不安全的请求。简而言之,您的请求应该是支持HTTPS的服务器
您可以通过将以下代码添加到plist
中来绕过此问题 <key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
如果您需要更多相关信息,请访问以下链接
希望这可以帮助你......
答案 1 :(得分:0)