Repository: cxf Updated Branches: refs/heads/master b0a664f1a -> 789380097
Add reflection for HTTPS unknown verbs (at least for Oracle Java8) Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/78938009 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/78938009 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/78938009 Branch: refs/heads/master Commit: 789380097587b1edde3671a56348918553b27f86 Parents: b0a664f Author: Daniel Kulp <[email protected]> Authored: Tue Jan 24 11:39:10 2017 -0500 Committer: Daniel Kulp <[email protected]> Committed: Tue Jan 24 11:39:39 2017 -0500 ---------------------------------------------------------------------- .../http/URLConnectionHTTPConduit.java | 22 ++++++++++++++++++++ 1 file changed, 22 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/78938009/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java ---------------------------------------------------------------------- diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java index bbafdcf..249c735 100644 --- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java +++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/URLConnectionHTTPConduit.java @@ -32,6 +32,8 @@ import java.net.URL; import java.net.URLConnection; import java.util.logging.Level; +import javax.net.ssl.HttpsURLConnection; + import org.apache.cxf.Bus; import org.apache.cxf.common.util.ReflectionUtil; import org.apache.cxf.common.util.SystemPropertyAction; @@ -146,7 +148,27 @@ public class URLConnectionHTTPConduit extends HTTPConduit { } if (b) { try { + boolean set = false; java.lang.reflect.Field f = ReflectionUtil.getDeclaredField(HttpURLConnection.class, "method"); + if (connection instanceof HttpsURLConnection) { + try { + java.lang.reflect.Field f2 = ReflectionUtil.getDeclaredField(connection.getClass(), + "delegate"); + Object c = ReflectionUtil.setAccessible(f2).get(connection); + if (c instanceof HttpURLConnection) { + ReflectionUtil.setAccessible(f).set(c, httpRequestMethod); + } + + f2 = ReflectionUtil.getDeclaredField(c.getClass(), "httpsURLConnection"); + HttpsURLConnection c2 = (HttpsURLConnection)ReflectionUtil.setAccessible(f2) + .get(c); + + ReflectionUtil.setAccessible(f).set(c2, httpRequestMethod); + } catch (Throwable t) { + //ignore + t.printStackTrace(); + } + } ReflectionUtil.setAccessible(f).set(connection, httpRequestMethod); message.put(HTTPURL_CONNECTION_METHOD_REFLECTION, true); } catch (Throwable t) {
