Я пытаюсь загрузить XML-файл для анализа с сервера, но сервер не отправляет HTTP-заголовки, а просто XML-текст. Я пробовал почти каждый метод загрузки файлов с URL-адресом, который я могу найти, но все дает мне исключение ввода-вывода. Я могу загрузить файл в WebView, но я не могу загрузить файл сам.Как загрузить xml-файл с сервера без заголовков http
Как я могу открыть соединение и загрузить XML-файл без заголовков HTTP?
EDIT: Тем не менее дает мне исключение I/O, вот код, я использую:
private class UpdateTask extends AsyncTask<Void, Void, Void> {
protected Void doInBackground(Void...voids) {
String url = "http://192.168.1.92/state.xml";
try{
//get XML Pull parser
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
//factory.setValidating(false);
XmlPullParser xpp = factory.newPullParser();
HttpGet httpGet = new HttpGet(url);
DefaultHttpClient client = new DefaultHttpClient();
HttpResponse response = client.execute(httpGet);
if(response == null) return null;
HttpEntity httpEntity = response.getEntity();
InputStream inStream = null;
StringBuilder sb = null;
if (httpEntity == null) return null;
try {
inStream = httpEntity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(inStream, "UTF-8"));
sb = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
inStream.close();
} catch (Exception ex) {
}
String xmlString = sb.toString();
xpp.setInput(new StringReader(xmlString));
int eventType = xpp.getEventType();
String name = null;
String text = null;
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_TAG) { // <name>
name = xpp.getName();
System.out.println("got name: " + name);
} else if(eventType == XmlPullParser.END_TAG) {// </name> (xpp.getName();
} else if(eventType == XmlPullParser.TEXT) { // <>text</>
text = xpp.getText();
System.out.println("got text: " + text);
}
eventType = xpp.next();
}
finished = true;
}catch(MalformedURLException e){
System.out.println("Malformed URL");
}catch(IOException e){
System.out.println("IO Exception updating " + name + " at address: " + address);
}catch(XmlPullParserException e){
System.out.println("XML Pull Parser Error updating " + name + " at address: " + address);
}catch(Exception e){
}
return null;
}
}
дает мне исключение ввода/вывода каждый раз. Однако, если я укажу его на сервер, который предоставляет HTTP-заголовок, он загружается просто отлично. Серверы - это устройства, которые мы создаем внутри компании, а старые устройства не предоставляли заголовки HTTP при запросе файла state.xml, поэтому мне нужно иметь возможность работать с обоими.
Найти/прочитать статьи о том, как задавать вопросы. Ваш вопрос должен быть конкретным, насколько это возможно. Вы должны предоставить как можно больше информации о проблеме. – Maxim
Если вы загрузите http://192.168.1.92/state.xml в свой браузер, и он вернет вам xml, тогда поставьте точку останова в первой строке в разделе try и узнайте, что вызывает исключение, или опубликуйте свой LogCat здесь. – Maxim
. браузер отлично возвращает XML-страницу. iOS также подключается и загружается отлично, а WebViews также отображает XML. В коде он генерирует исключение ввода-вывода при открытии InputStream или в этом случае, когда я выполняю client.execute (httpGet); Мой logcat просто возвращает System.out.println («Исключение I/O»); даже со строгим режимом. Есть ли способ получить более подробный отчет об ошибке? – daven3t