Сбой сервера. connection.getErrorStream()
может содержать подробный отчет об ошибке. Вам нужно прочитать его в блоке catch
.
Что касается вашего кода, то, по крайней мере, способ, которым ваш URL закодировал строку запроса, неверен.
String urlParameters = "fileName="+ fileName+"¶m02="+ param02+"¶m03="+ param03+"¶m05="+ param05+"¶m08="+ param08+"¶m11="+ param11;
String encodedurl = java.net.URLEncoder.encode(urlParameters);
Вы вообще не должны кодировать символы-разделители &
и =
в URL. Исправьте это следующим образом:
String charset = "UTF-8";
String urlParameters = String.format(
"fileName=%s¶m02=%s¶m03=%s¶m05=%s¶m08=%s¶m11=%s",
URLEncoder.encode(fileName, charset),
URLEncoder.encode(param02, charset),
URLEncoder.encode(param03, charset),
URLEncoder.encode(param05, charset),
URLEncoder.encode(param08, charset),
URLEncoder.encode(param11, charset));
Вы также должны быть чрезвычайно осторожны с использованием кодировки. Вы все время полагаетесь на кодировку платформы по умолчанию, а не указываете ее явно. Сервер не обязательно может использовать ту же самую кодировку платформы по умолчанию. Длина содержимого, например, может варьироваться в зависимости от используемой кодировки.
Вы также не должны использовать DataOutputStream
для написания тела запроса. Он предназначен для создания так называемых .dat
файлов, в которых блоки данных отформатированы и разделены особым образом на двоичном уровне. Просто напишите это прямо в connection.getOutputStream()
.
connection.getOutputStream().write(urlParameters.getBytes(charset));
То, что на сервере произошел сбой вместо возврата какого-либо HTTP 4nn
Ошибка в свою очередь также указывает на программную ошибку в коде сервера. Если у вас есть контроль над этим, исправьте это. Если нет, сообщите об этом ответственному администратору сервера.
Смотри также: