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());
我正在尝试使用 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());