#android #3g #urlconnection #wifi
#Android #3g #urlconnection #Wi-Fi
Вопрос:
Я написал приложение, которое использует URLConnection для получения файла .html. Через WiFi все работает нормально. Но через 3g файл возвращается некорректно. Когда я пытаюсь получить доступ к веб-сайту через браузер, он работает нормально. У кого-нибудь есть предложения?
Обновить: Вот мой код:
URL downloadUrl;
URLConnection downloadConnection;
InputStream inputStream;
byte[] inputBytes;
String[] output;
private void downloadSource(String pUrl)
{
try
{
downloadUrl = new URL(pUrl);
downloadConnection = downloadUrl.openConnection();
downloadConnection.setConnectTimeout(10000);
downloadConnection.setReadTimeout(10000);
inputStream = downloadConnection.getInputStream();
ByteArrayOutputStream result = new ByteArrayOutputStream();
inputBytes = new byte[10000];
int i;
int i1 = 0;
while ((i = inputStream.read(inputBytes)) > 0)
{
result.write(inputBytes, 0, i);
result.flush();
i1 = i;
}
result.flush();
result.close();
output = result.toString().split("n");
}
catch (Exception e)
{
e.printStackTrace();
}
}
Комментарии:
1. не могли бы вы, пожалуйста, предоставить код? Также приложите файл журнала, если это возможно.
2. Я добавил это к вопросу. Файл журнала не содержит ничего для этого.
3. можете ли вы выполнить пинг URL-адреса в сети 3G?
4. Да, я могу пропинговать его без каких-либо проблем.
5. Я только что заметил, что некоторая часть документа загружена, но она не содержит символов новой строки. Итак, все записывается в output[0]. Но он записывает в него только около 4000 символов.
Ответ №1:
Возможно, немного поздновато для ответа, но у меня была та же проблема, с Wifi загруженный html имел другие пробелы, чем тот, который был загружен с 3G.
Я решил это, удалив User-Agent в соединении:
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent","");
Я надеюсь, что это кому-то поможет!