邮递员请求编码

我正在写我自己的HTTP服务器。 我正在使用Java Socket 。 我从下一条路读取InputStream请求

 val input = BufferedReader(InputStreamReader(socket.inputStream, "UTF-8")) 

当我收到来自curl或浏览器的请求时,一切都很好。 但是,当我收到Postman请求,我得到这样的东西:

   g       #   =  g       #   ,   9    3   5 / =  9    3   5 / , 

我试图使用其他编码的InputStreamReader ,如UTF-16ASCII 。 邮递员请求使用哪种编码,以及如何在服务器上读取邮件?

更新:对不起,这是我的失败。 我在提出请求时使用了HTTPS。

注:我的其他答案是更直接的,这是相关的HTTP服务器库在Kotlin中使用,以防其他人阅读这个问题,并想知道替代品。 不知道这是否是一个XY问题 ,如果作者不知道其他选项。

其他方式,如果你不想建立一个HTTP库,而是使用一个:

原始的HTTP框架:

  • 任何为Java编写的东西,特别是:
  • Undertow.io
  • Vert.x 3与Vert.x-web
  • Netty – 非常低的水平

比原始HTTP更多,但不是MVC或REST框架:

  • 芥末 – 科特林具体

而对于更完整的REST或Web框架:

  • KTOR – Kotlin具体
  • Kovert – Kotlin具体,REST,但添加意见( 免责声明:我是作者
  • Spark Java – Java在Kotlin中很好地工作
  • Vert.x Nubes – Java,在Vert.x之上工作
  • Kikaha – Java,在Undertow之上工作

如果收到的前两个字节是ASCII 31(0x1F)和139(0x8B),你正在接收一个GZIP流,并由于某种原因说服客户端,你支持GZIP Content-Encoding (不同于字符集编码)。

数据看起来比字符编码更为二进制。 二进制数据的Gzip,deflate,SSL或其他原因是应该看的。

您可能无法正确进行内容协商,因此无法接收二进制gzip或deflate。 或者使用HTTPS与HTTP。 或上传图片。 东西,但不是文字。

    Interesting Posts