为什么jdk8不支持http PATCH方法

问题描述 投票:0回答:1

在JDK8中,HttpURLConnection.java不支持PATCH方法。但为什么?如果服务器使用PATCH方法,我该如何解决这个问题?

    /* valid HTTP methods */
    private static final String[] methods = {
        "GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE"
    };
http java-8
1个回答
0
投票

您可以非常简单地“修复”Java 8 以允许 PATCH 方法,方法是使用反射将“PATCH”的字符串值添加到 HttpURLConnection 的内部数组中,方法如下:

Field methodsField = HttpURLConnection.class.getDeclaredField("methods");
methodsField.setAccessible(true);
Field mods = Field.class.getDeclaredField("modifiers");
mods.setAccessible(true);
mods.setInt(methodsField, methodsField.getModifiers() & ~Modifier.FINAL);
methodsField.set(myHttpURLConnObject, new String[] {"GET", "POST", "HEAD", "OPTIONS", "PUT", "DELETE", "TRACE", "PATCH"});

之后您应该能够设置修补方法并且它应该可以工作。您还可以使用“myHttpURLConnObject”,它实际上是具有上述代码的 HttpsURLConnection 实例,方法是在“methodsField.set...”行中添加对“HttpURLConnection”的强制转换,而不需要对上述代码进行任何其他更改。

© www.soinside.com 2019 - 2024. All rights reserved.