Я получаю сообщение от локального хост-сервера. Сервер отправляет мне сообщение в формате XML
, UTF-8 encoded
. Это сообщение хранится в переменной с именем buffer типа UnsafeMutablePointer<UInt8>
. Теперь я попытался напечатать этот буфер, но все, что он показывает, это 0, он работает, если я отправляю строку, которая не закодирована, но требуется, чтобы отправляемая строка кодировалась в `` `UTF-8``
Вот код, который я использую для чтения сообщения:
let maxreadlength = 4096
let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: maxreadlength)
while InputStream.hasBytesAvailable {
let numberOfBytesRead = InputStream.read(buffer, maxLength: maxreadlength)
if numberOfBytesRead < 0, let error = InputStream.streamError{
print(error)
break
}
}
let output = String(cString: buffer)
print("server output is: \(output)")
Полученное сообщение XML должно выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<Details>
<response>
<name>Name</name>
<ip>127.0.0.1</ip>
</response>
</Details>
Может кто-нибудь помочь мне сказать, что я делаю неправильно и что я могу сделать, чтобы расшифровать сообщение?
Вот что я пробовал:
let output2 = String(describing: output.cString(using: String.Encoding.utf8))
это тоже не сработало. Я попробовал несколько других, похожих на это, но ни один из них, похоже, не работал.