NSURLセッションを使用して特定のWebサイトのHTMLコードを取得しています。次のコードはiOS(ViewController.swift)で完璧に動作しますが、interfaceOSroller.swiftのwatchOSでは常に失敗します。コードは常にelse文を出力します:print( "apple watch:error with loading nsurlsession")。Swift:NSURLセッションがwatchOSで動作しない
誰でも私を説明することができます(なぜ失敗するのですか)どのようにこれを変更することができますか?私はすべての反応に感謝しています!
(私はiOSの11とwatchOS 4.0で迅速4.0を使用しています - ペアのAppleウォッチシリーズ2とシミュレータにし、iPhone 7上でテスト)
コード:
func authorizeBase() {
let loginString = NSString(format: "%@:%@", username, password)
let loginData: NSData = loginString.data(using: String.Encoding.utf8.rawValue)! as NSData
let base64LoginString = loginData.base64EncodedString(options: [])
let url: NSURL = NSURL(string: urlPath)!
let request: NSMutableURLRequest = NSMutableURLRequest(url: url as URL)
request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
request.httpMethod = "GET"
let config = URLSessionConfiguration.default
config.requestCachePolicy = .reloadIgnoringLocalCacheData //deactivate cache
config.urlCache = nil
let authString = "Basic \(base64LoginString)"
config.httpAdditionalHeaders = ["Authorization" : authString]
let session = URLSession(configuration: config)
session.dataTask(with: url as URL) {
(data, response, error) in
if (response as? HTTPURLResponse) != nil {
_ = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
let contents = String(data: data!, encoding: .ascii)
print("apple watch: Content:", contents!)
self.parseHTMLOverview(content: contents!)
self.updateTable() //!!!
}
else {
print("apple watch: error with loading nsurlsession")
}
}.resume()
}
'if(HTTPURLResponseとしての応答!)= nil'テストがfalseになったので、あなたの' print'文が呼び出されています。これは、応答が 'nil'か、' HTTPURLResponse'ではなかったことを意味します。最も可能性の高いケースは 'nil'であり、' error'変数には何がうまくいかなかったのかを説明するエラーが入っているはずです。この情報は、あなたのコードが失敗している理由を理解するために必要になります。あなたのログに追加し、結果を投稿してください。 –