HttpURLConnection 已连接

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

我正在尝试复制这个,来自 openstack swift v1 的复制句子(效果很好):

curl -i $publicURL/GXPrueba/StorageAPI/PruebaStorageCopy.png -X PUT -H "X-Auth-Token:  $token" -H "X-Copy-From: /GXPrueba/StorageAPI/PruebaStorage.png" -H "Content-Length: 0"

像这样:

private void copy(String originContainer, String origin, String destinationContainer, String destination) {
    try {
        URL url = new URL(storageUrl + DELIMITER + destinationContainer + DELIMITER + destination);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoInput(true);
        conn.setDoOutput(true);
        conn.setRequestMethod("PUT");
        conn.setRequestProperty("X-Auth-Token", authToken);
        conn.setRequestProperty("X-Copy-From", DELIMITER + originContainer + DELIMITER + origin);
        conn.setRequestProperty("Content-Length", "0");

        if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
            System.err.println("Error while copying the object: " + conn.getResponseCode());
        }
        conn.disconnect();

    } catch (MalformedURLException e) {
        System.err.println("Error while copying the object: " + e.getMessage());
    } catch (IOException e) {
        System.err.println("Error while copying the object: " + e.getMessage());
    }
}

而且我每次都在不同的线路上遇到

java.lang.IllegalStateException: Already connected
异常。 我已经尝试过我找到的其他解决方案(例如删除
setDoInput
),但似乎没有任何效果。

这是堆栈跟踪

Exception in thread "main" java.lang.IllegalStateException: Already connected
    at java.net.URLConnection.setDoOutput(URLConnection.java:900)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.setDoOutput(HttpsURLConnectionImpl.java:455)
    at javaapplication3.ExternalProviderBluemix.copy(ExternalProviderBluemix.java:212)
    at javaapplication3.ExternalProviderBluemix.copy(ExternalProviderBluemix.java:202)
    at javaapplication3.JavaApplication3.main(JavaApplication3.java:39)
C:\Users\lsarni\AppData\Local\NetBeans\Cache\8.1\executor-snippets\debug.xml:83: Java returned: 1
BUILD FAILED (total time: 24 seconds)
java illegalstateexception httpconnection openstack-swift
2个回答
8
投票

我发现这个问题的解决方案是@Sharcoux 在这里发布的,这解释了为什么有时它会工作得很好。

因此,要在 NetBeans 上调试时解决此问题,您需要从监视中删除所有使用 conn 的表达式(例如

conn.setDoOutPut()
等)。


0
投票

我做了同样的事情,所有方法都出现了相同的错误,这是因为我有不同的观察者,所以当创建观察者时执行连接,因此连接已经创建或正在进行中。

建议:删除调试模式下的所有观察者

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