Я строю систему, с одной стороны, приложение для Android, которое использует связь HTTPURLConnection
с другой стороной, которая является C# HttpListener
. По этому каналу они обмениваются данными XML.C# HttpListener сбрасывает соединение
Это работает очень хорошо, за исключением некоторых более крупных данных. Когда я пытаюсь сообщить об этом, я вижу, что XML с Android прибывает на приложение C#, на которое отвечает приложение C#. Однако, прежде чем данные поступят на Android, я получаю «Сброс соединения с помощью сверстника». исключение.
Это Android код:
URL url = new URL(urlString);
connection = (HttpURLConnection)url.openConnection();
connection.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
connection.setDoOutput(true);
connection.setFixedLengthStreamingMode(tel.length());
connection.setReadTimeout(30000);
// write our telegram...
OutputStream output = new BufferedOutputStream(connection.getOutputStream());
output.write(tel.getBytes());
output.flush();
и вот ответ гласил:
InputStream input = new BufferedInputStream(connection.getInputStream());
if (connection.getResponseCode() == HttpStatus.SC_OK) {
String r = null;
byte cbuf[] = new byte[connection.getContentLength()];
if (input.read(cbuf, 0, connection.getContentLength()) != -1) {
r = new String(cbuf);
}
reply = Telegram.fromString(r);
} else {
throw new ProtocolException("HTTP Error code: "+connection.getResponseCode());
}
и это C# код:
httpListener = new HttpListener();
httpListener.Prefixes.Add(String.Format("http://*:{0}/", port);
httpListener.Start();
Я думаю, что это тайм-аут. Внутри объекта вы устанавливаете тайм-аут. Проверьте объект подключения. –
@MetehanToksoy это не таймаут. Это сброс соединения. Но я постараюсь сделать тайм-аут выстрелом. –
Что делать, если наоборот? Я имею в виду, что на вашей стороне сервера будет тайм-аут? –