HttpURLConnection getOutputStream class 在 Android 上抛出异常

HttpURLConnection getOutputStream class cast exception on Android

我正在尝试使用 HttpURLConnection 在 Android 应用程序中发送和接收消息。此代码在 java 应用程序中工作正常,但是当 运行 在 Android 上时,我得到以下异常:

java.lang.ClassCastException: com.android.okio.RealBufferedSink cannot be cast to java.io.ByteArrayOutputStream

发生这种情况的代码:

        URL url = new URL(destURI.toString());

        HttpURLConnection con = (HttpURLConnection) url.openConnection();

        // Set request properties and headers
        con.setDoOutput(true);
        con.setDoInput(true);
        con.setRequestProperty(HEADER_CONTENT_TYPE, CONTENT_TYPE_LS);
        con.setRequestProperty(HEADER_CONTENT_LENGTH, new Integer(wrapperBytes.length).toString());
        con.setRequestMethod(METHOD_POST);

        // Set connect and read timeouts
        con.setConnectTimeout(timeoutInMillis);
        con.setReadTimeout(timeoutInMillis);

        // Write request content
        ByteArrayOutputStream out = (ByteArrayOutputStream) con.getOutputStream();
        out.write(wrapperBytes);
        out.flush();

我查看了 android 参考页,这些似乎符合我的预期,getOutputStream() returns 和 OutputStream。然后应该可以将其转换为 ByteArrayOutputStream

RealBufferedSink 是从哪里来的?为什么我没有收到 OutputStream 回复?

如有任何帮助,我们将不胜感激!

铸造

ByteArrayOutputStream out = (ByteArrayOutputStream) con.getOutputStream();

不推荐, 你可以试试:

 OutputStream out = new BufferedOutputStream(con.getOutputStream());