2016-09-30 2 views
0

Ich versuche HttpURLConnection zu verwenden, um Nachrichten in einer Android-Anwendung zu senden und zu empfangen. Dieser Code funktioniert in einer Java-Anwendung in Ordnung, aber wenn auf Android laufen bekomme ich die folgende Ausnahme:HttpURLConnection getOutputStream Klasse Cast Ausnahme auf Android

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

Der Code, wo dies der Fall ist:

 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(); 

Ich habe auf den Android-Referenzseiten geschaut und diese scheinen zu sagen, was ich erwarten würde, getOutputStream() gibt eine OutputStream zurück. Dies sollte dann in der Lage sein, zu einem ByteArrayOutputStream gegossen werden.

Woher kommt die RealBufferedSink? Warum bekomme ich keine OutputStream zurück?

Jede Hilfe würde sehr geschätzt werden!

+0

gerade diese verwenden: Output out = con.getOutputStream(); – itzswan

Antwort

0

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

empfohlen, nicht Sie könnten versuchen, Casting:

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

Ich glaube nicht, dass das ein gültiger Konstruktor ist - es gibt 'new ByteArrayOuputStream()' und 'new ByteArrayOutputStream (int size)', aber nicht einen, der den OutputStream-Parameter – JLo237

+0

@ JLo237 übernimmt Ich habe die Antwort aktualisiert, eigentlich sollte es BufferedOutputStream sein – super1ha1

+0

Das war es, vielen Dank! – JLo237

Verwandte Themen