我目前正在Java9〜10中通过this访问HTTP / 2客户端.
Java 9确实具有HttpRequest.BodyProcessor接口,而Java 10没有HttpRequest.BodyProcessor,但是确实具有HttpRequest.BodyPublisher.两个接口都是相似的.
Java为什么更改接口名称?我认为向后兼容性被忽略了.
解决方法:
带有Java 9和10的HttpClient
has been a part of an incubator module.因此,人们看到的是更多的原型工作,尽管理想情况下应该不会有太大变化,但不能保证相同.
An incubating feature is an API of non-trivial size that is under
development for eventual inclusion in the Java SE Platform, or the
JDK, but is not yet sufficiently proven.
如果您希望使用标准模块,则可以在Java 11中使用它,其名称为java.net.http
.[请注意,其标记为Java 11以后的版本,而不是9或10.
如果您已经在Java9 / 10中使用HttpClient,那么The jdk.incubator.httpclient module not found in Java11可以帮助您迁移HttpClient在Java 11中的用法.
稍微偏离主题:如果您可以比较两个JDK中的源代码,您会发现与Java 10和Java 11中的状态相比,BodyPublisher中的方法都有更新.