С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
MadStranger
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
1

Android клиент передача XML сообщений

16.10.2012, 19:04. Просмотров 1461. Ответов 9
Метки нет (Все метки)

Здравствуйте.

Имеется задача организовать общение приложения-клиента на Android с сервером посредством использования XML-сообщений. Опыта подобной разработки никогда не было, поэтому прошу простить если код на самом деле полная ересь.

Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
try {
                    URL url1 = null;
                    url1 = new URL("http://mysite.ru/");
                    URLConnection urlc1 = url1.openConnection();
                    HttpURLConnection con1 = (HttpURLConnection) urlc1;
                    
                    con1.setRequestMethod("POST");
                    
                    con1.setUseCaches(false);
                    con1.setDoOutput(true);
                    con1.setDoInput(true);
                    con1.setRequestProperty("accept-charset", "UTF-8");
                    con1.setRequestProperty("content-type", "application/x-www-form-urlencoded");
                    
 
                    XmlSerializer ser1 = Xml.newSerializer();
                    StringWriter writer = new StringWriter();
                    ser1.setOutput(writer);
                    ser1.startDocument("UTF-8", true);              
                    ser1.startTag("", "request");
                    ser1.attribute("", "query", "open_session");
                    ser1.startTag("", "");
                    ser1.attribute("", "client", "name");
                    ser1.attribute("", "version", "1.0");
                    ser1.endTag("", "");
                    ser1.endTag("", "request");
                    ser1.endDocument();
                    
                    String query = writer.toString();   
                
                    con1.connect();
                    
                    OutputStreamWriter out1 = new OutputStreamWriter(con1.getOutputStream());  
                    out1.write(query);  
                    out1.flush();   
                    
                
                    String result1 = null;
                    BufferedReader br1 = new BufferedReader(new InputStreamReader(con1.getInputStream()));
                     StringBuffer sb = new StringBuffer();
                     String line;
                     while ((line = br1.readLine()) != null){
                         sb.append(line);
                         }
                     br1.close();
                     result1 = sb.toString();
                     
                    
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
Выдает ошибку 302. Если убрать из кода три строки:
Java
1
2
3
OutputStreamWriter out1 = new OutputStreamWriter(con1.getOutputStream());  
                    out1.write(query);  
                    out1.flush();
то в ответ приходит правильный XML от сайта, ошибка "Неверный XML файл"(в нашем случае реальная причина - XML не был отправлен).

Можете подсказать решение проблемы? Или хотя бы указать на ошибки и ткнуть на необходимые мануалы.

Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2012, 19:04
Ответы с готовыми решениями:

Клиент-серверное приложение android
Ребят, такая задача: Необходимо, чтобы пользователь1 мог отправлять сообщение...

Клиент-сервер Linux-Android
Передо мной стоит задача - написать простенький клиент сервер. Сервер на...

Клиент Android не коннектится к Серверу пк
Клиент Android не коннектится к Серверу ПК. Сервер: import java.io.*;...

TCP клиент под Android
Доброго времени суток. Имеется TCP сервер под Windows, написанный на Delphi...

Клиент-сервер для android
Здравствуйте. Мне нужно сделать следующее:сервер с базой данных и клиенты на пк...

9
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.10.2012, 00:14 2
Цитата Сообщение от MadStranger Посмотреть сообщение
Выдает ошибку 302.
полный лог нужен.


Цитата Сообщение от MadStranger Посмотреть сообщение
то в ответ приходит правильный XML от сайта, ошибка "Неверный XML файл"(в нашем случае реальная причина - XML не был отправлен).
нифига не понял.

пермишены в манифесте прописаны?
0
MadStranger
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
17.10.2012, 02:15  [ТС] 3
Ошибка:
HTML5
1
<html><head><title>302 Found</title></head></body bg color="white"><center><h1>302 Found</h1></center><hr><center>nginx/1.0.0</center></body><html>
пермишен на интернет висит, должно быть еще что-то?

нифига не понял.
если убрать код, который отправляет XML, то в ответ приходит стандартный XML ответ от сервера, сообщающий, что прислан неправильный XML. То есть соединение с сервером работает, получение ответа тоже. А вот отправка XML - нет.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.10.2012, 03:06 4
тю, так это вовсе не ошибка кода, смотрите мануал к сервису.

Добавлено через 3 минуты
writer.toString() - а что тут вообще получается проверяли?

Добавлено через 3 минуты
Цитата Сообщение от MadStranger Посмотреть сообщение
http://mysite.ru/
это вы просто заменили или в коде так и написано? если так и написано, то проблема в том, что такого сайта нет.

Добавлено через 34 секунды
Цитата Сообщение от MadStranger Посмотреть сообщение
стандартный XML ответ от сервера
это какой?

Добавлено через 1 минуту
http://ru.wikipedia.org/wiki/HTTP_302#302
0
MadStranger
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
17.10.2012, 13:07  [ТС] 5
Если убираю код об отправке XML, то приходит стандартный ответ:
XML
1
2
3
4
5
<result success="false">
<error error-code="XML-01">
Неверный XML
</error>
</result>
Такой же должен быть, если бы у меня отправлялся битый XML, а у меня при отправке возвращается этот самый 302.
При верном XML ответ должен выглядеть следующим образом:
XML
1
2
3
<result success="true">
<session-info time-out="number" id="number" start="number"/>
</result>
Сайт в коде стоит мой, здесь просто поменял на mysite.ru

toString - просто перегонял в строку, у меня writer в формате StringWriter.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
17.10.2012, 23:19 6
может проблема на стороне сервера?
0
MadStranger
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
18.10.2012, 00:17  [ТС] 7
На сервере все нормально, клиенты с других платформ подключаются.
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.10.2012, 00:32 8
Цитата Сообщение от MadStranger Посмотреть сообщение
toString - просто перегонял в строку
спрашиваю строка какая получается...


Цитата Сообщение от MadStranger Посмотреть сообщение
клиенты с других платформ подключаются.
может они другое сообщение отправляют, проверте что вы получаете на выходе и что отправляют другие клиенты.
0
MadStranger
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
19.10.2012, 19:08  [ТС] 9
строка

<?xml version='1.0' encoding='UTF-8' standalone='yes'?><request query="open_session"><client="name" version="1.0"/><request/>

соответственно ее и отправляю. На других клиентах проверить, к сожалению, нет возможности.
0
MadStranger
0 / 0 / 0
Регистрация: 15.10.2012
Сообщений: 6
24.10.2012, 16:36  [ТС] 10
С переадресацией разобрался пообщавшись с админом сервера.

Теперь возникла другая проблема - согласно логам сервер не получает моих XML сообщений. Мне сказали использовать CGI переменную xml, но я не имею ни малейшего представления как, где и зачем ее использовать. Можете подсказать? Ну или хотя бы ткнуть носом в какой-нибудь мануал.
0
24.10.2012, 16:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2012, 16:36

Android разработка клиент-сервера
Всем привет! Встал вопрос создания клиент-сервера, но к сожалению об обращении...

Клиент-серверное приложение android
Каким образом можно создать приложение для передачи данных через интернет? Одно...

Реализация Клиент(Телефон) - Сервер(ПК) на Android
Здравствуйте. Интересует информация по теме: клиент-сервер на Андройд. Для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru