邮递员请求编码

我正在写我自己的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。

2 Solutions collect form web for “邮递员请求编码”

注:我的其他答案是更直接的,这是相关的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。 或上传图片。 东西,但不是文字。

  • 转换Android项目使用Gradle脚本Kotlin
  • 什么是Kotlin Gradle依赖关系中的“实现”?
  • 与Kotlin泛型混淆
  • 避免在YouTubePlayerFragment init中暂停另一个音频应用程序
  • 如何在科特林无限和懒惰地循环列表?
  • 如何找到哪个元素在Kotlin中的数组比较失败?
  • 当订阅TestSubscriber时,RxKotlin - Single.just()不会发出
  • ClassMapper:aBooleanType没有设置者/字段
  • Android Studio和Kotlin:未解决的参考:也
  • Kotlin:子构造函数如何使用其父构造函数?
  • Kotlin并行协程
  • Kotlin language will be the best programming language for Android.