swi*_*ynx 4 response request swift vapor
在我的一条路线中,我想从不同的站点获取 HTML。https://docs.vapor.codes/4.0/content/ documents支持 JSON 等,但我在原始 HTML 上找不到任何内容。
request.client.get(URI(string: "https://example.com/")).map { (response: ClientResponse) -> String? in
if response.status == .ok && response.content.contentType == .html {
return response.content... // How do I get raw html?
}
return nil
}
Run Code Online (Sandbox Code Playgroud)
如何从客户端响应中获取原始 HTML?
有几种方法可以做到这一点,这取决于String您碰巧喜欢哪个初始化程序。请注意,要使用以下任何方法,您需要先解开响应正文:
guard let body = response.body else {
throw Abort(.internalServerError)
}
Run Code Online (Sandbox Code Playgroud)
第一种方法是使用ByteBuffer.readString方法。
guard let html = body.readString(length: body.readableBytes) else {
throw Abort(.internalServerError)
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用String(decoding:as:)初始化程序,它可用于将任何UInt8整数集合转换为 a String:
let html = String(decoding: body.readableBytesView, as: UTF8.self)
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用String(buffer:)@iMike 建议的初始化程序。
let html = String(buffer: body)
Run Code Online (Sandbox Code Playgroud)
请记住,该.readBytes方法将增加.readIndex的ByteBuffer,而String初始值设定项不会。尽管我认为这对您来说并不重要。
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |