我正在尝试使用java.lang.ClassCastException: com.android.okio.RealBufferedSink$1 cannot be cast to java.io.ByteArrayOutputStream
在Android应用程序中发送和接收消息。此代码在java应用程序中工作正常,但在Android上运行时,我得到以下异常:
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();
发生这种情况的代码:
getOutputStream()
我查看了Android参考页面,这些似乎说出了我的期望,OutputStream
返回ByteArrayOutputStream
。然后应该将其转换为RealBufferedSink
。
OutputStream
来自哪里?为什么我没有得到{{1}}回来?
非常感谢任何帮助!
答案 0 :(得分:0)
施法
ByteArrayOutputStream out = (ByteArrayOutputStream) con.getOutputStream();
不推荐, 你可以试试:
OutputStream out = new BufferedOutputStream(con.getOutputStream());