Ich bin neu in Java und stoße in den oben genannten Fehler, während ich HTTPURLConnection verwende, um mehrere Postanforderungen auf Android zu senden. Ich habe eine HTTPTransport-Klasse geschrieben, in der ich sendMessage- und recvMessage-Methoden verwenden möchte.HTTPUrlConnection-Fehler (OutputStream kann nach dem Lesen aus einem inputStream nicht geöffnet werden)
public class HTTPTransport
{
private HttpURLConnection connection;
public HTTPTransport()
{
URL url = new URL("http://test.com");
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "application/octet-stream");
connection.setRequestProperty("Accept-Encoding", "gzip");
connection.setRequestProperty("Connection", "Keep-Alive");
}
public void sendMessage(byte[] msgBuffer, long size)
{
try
{
DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
dos.write(msgBuffer, 0, (int)size);
dos.flush();
dos.close();
dos.close();
}
catch(IOException e)
{
// This exception gets triggered with the message mentioned in the title.
Log.e(TAG, "IOException: " + e.toString());
}
}
public byte[] recvMessage()
{
int readBufLen = 1024;
byte[] buffer = new byte[readBufLen];
int len = 0;
FileOutputStream fos = new FileOutputStream(new File("/sdcard/output.raw"));
DataInputStream dis = new DataInputStream(connection.getInputStream());
while((len = dis.read(buffer, 0, readBufLen)) > 0)
{
Log.d(TAG, "Len of recd bytes " + len + ", Byte 0 = " + buffer[0]);
//Save response to a file
fos.write(buffer, 0, len);
}
fos.close();
dis.close();
return RecdMessage;
}
}
Ich bin in der Lage, die erste Nachricht erfolgreich mit sendMessage und recvMessage zu senden. Wenn ich versuche, den zweiten zu senden, sehe ich diesen Fehler: IOException: java.net.ProtocolException: kann OutputStream nach dem Lesen von einem InputStream
nicht öffnenBitte lassen Sie mich wissen, wie ich diese Klasse schreiben kann.
Danke!
Es tut mir leid, aber da ich neu in Java bin, habe ich Ihre Antwort nicht verstanden. – smitten
Hilft das? http://download.oracle.com/javase/1.5.0/docs/guide/net/http-keepalive.html – dkarp
Danke, ich werde es durchgehen. – smitten