Подтвердить что ты не робот

"Поток отправляет событие перед открытием"

Я пытаюсь сделать запрос SOAP с помощью Swift. Запуск последней версии Xcode/iOS с 9/9/14. Я использую NSMutableURLRequest, с которым я добавляю HTTPBody с информацией о запросе. Однако, как только я начинаю с NSURLConnection с запросом, я получаю сообщение об ошибке "Stream xxxxxxxxx отправляет событие перед открытием". Я не использую какие-либо сетевые библиотеки, просто старое NSURLConnection. Любые мысли о том, что может вызвать эту ошибку? Спасибо!

Используемый код:

func createSOAPRequestWithEnvelope(soapEnvelope : String) {
    //create request
    var url = NSURL(string: "https://my-service-url")
    var req = NSMutableURLRequest(URL: url, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 5000)

    req.addValue("text/xml",    forHTTPHeaderField: "Content-Type")
    req.HTTPMethod = "POST"
    req.HTTPBody = soapEnvelope.dataUsingEncoding(NSUTF8StringEncoding)

    //begin connection
    var connection = NSURLConnection(request: req, delegate: self, startImmediately: false)
    connection.scheduleInRunLoop(NSRunLoop.mainRunLoop(), forMode: NSDefaultRunLoopMode)

    connection.start() //error happens after this command :(
}

//takes care of NTLM Authentication
func connection(connection: NSURLConnection!, didReceiveAuthenticationChallenge challenge: NSURLAuthenticationChallenge!) {
    var authMethod = challenge.protectionSpace.authenticationMethod

    if authMethod == NSURLAuthenticationMethodNTLM {
        var credential = NSURLCredential(user: self.username,
            password: self.password,
            persistence: NSURLCredentialPersistence.ForSession)

        challenge.sender.useCredential(credential, forAuthenticationChallenge: challenge)
    }
}

func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
    // Response received, clear out data
    self.transactionData = NSMutableData()
}

func connection(connection: NSURLConnection!, didReceiveData data: NSData!) {
    // Store received data
    self.transactionData?.appendData(data)
}
4b9b3361

Ответ 1

Проблема с Stream not Open, по-видимому, напрямую связана с реализацией CFNetwork. (воспроизводится при использовании NSConnection, а также NSSession). Это происходит для запросов (ответов), которые необходимо разбить. Побочным эффектом этой проблемы является то, что проверка подлинности Windows не работает должным образом, и каждый запрос должен пройти полный процесс установления связи. И это не исправлено и в iOS 8.1.

Ответ 2

Я искал всюду для этой проблемы, и в конечном итоге я передавал неправильные учетные данные в файле didReceiveAuthenticationChallenge: (

Проверьте, случайно ли вы делаете то же самое

Если это не работает, попробуйте это:

Вставьте свои учетные данные в строку URL

NSString *urlString = @"http://username:[email protected]/home";
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:urlString]]];