Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
#1

Передача HTML как строки из Андроида на сервер - Программирование Android

25.08.2016, 00:27. Просмотров 343. Ответов 14
Метки нет (Все метки)

Приложение андроида принимает html-строку, которую надо передать на сервер для парсинга.
Собственно алгоритм приема html и его передачи на сервер работают. Но только в том случае, когда вместо реального кода страницы подставляется какая-нибудь простая последовательность символов, например 1234567890 или что-то похожее.

Как только подставляется реальный код html, то сервер ничего не получает. Догадываюсь, что причина в тегах кода html. Вопрос, как это можно побороть?

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
                try {
                    URL url = new URL(urlStr);
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("POST");
                    urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    urlConnection.setRequestProperty("Content-Length", "" +
                            Integer.toString(sendPost.getBytes().length));
                    urlConnection.setRequestProperty("Content-Language", "en-US");
                    urlConnection.setUseCaches(false);
                    urlConnection.setDoInput(true);
                    urlConnection.setDoOutput(true);
 
                    DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
                    wr.writeBytes(codeHTML);
                    wr.flush();
                    wr.close();
 
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                    String s = "";
                    while ((s = bufferedReader.readLine()) != null) {
                        response += s;
                    }
                    bufferedReader.close();
 
                    urlConnection.disconnect();
                } catch (Exception e) {
                    e.printStackTrace();
                }
Вот код, который отвечает за отправку на сервер строки кода html. На данном этапе сервер просто эхом отправляет приложению строку, полученную методом POST.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2016, 00:27     Передача HTML как строки из Андроида на сервер
Посмотрите здесь:

Как написать приложение для андроида? - Программирование Android
такой вопрос. сделал сайт с фильмами онлайн, теперь хачу сделать приложения для андроида, чтоб люди могли заходить и смотреть фильмы со...

Как сделать Combobox для андроида - Программирование Android
Здравствуйте! Я только осваиваю программирование, поэтому возникают такие тривиальные для профессионалов вопросы. :) Подскажите,...

Как создать собственное приложение для Андроида? - Программирование Android
Нужно что то типо урока как создать собственное приложение андроид! Спасибо зарание!

Как подгрузить сайт на локальном хосте в WebView Андроида - Программирование Android
При запуска приложения с эмулятора он занимает 127.0.0.1. Следовательно, разработчики это предусмотрели и сделали замену в виде 10.0.2.2...

Передача изображения на сервер - Программирование Android
Здравствуйте уважаемые форумчане. Я все пытаюсь передать изображение на сервер, но никак не могу разобраться, что происходит, вот мой код: ...

Передача фото по сети на сервер - Программирование Android
У меня такая задача : нужно реализовать такое приложение чтобы водитель мог сфотографировать на улице обьект здание и тп и фото этого...

Передача значения переменой на сервер - Программирование Android
Здраствуйте! Например есть у меня переменная, а её значение надо передать на сервер. Как это реализовать? Добавлено через 3 часа 9...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
25.08.2016, 09:26     Передача HTML как строки из Андроида на сервер #2
Alexvp
Content-Type: application/x-www-form-urlencoded подразумевает что данные пойдут как часть запроса то есть
адрес?имя_1=значение_1&имя_2=значение_2
вы либо вообще не передаете никаких имя_1, имя_2 и т.п и посылаете данные после заголовка (неизвестно как сайт отреагирует на это - все зависит от скрипта обрабатывающего ваш запрос) либо пихаете HTML в значение_1, значение_2 и т.п. что чревато так как там есть ограничения на размер передаваемых данных и допустимые символы.
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
25.08.2016, 16:41  [ТС]     Передача HTML как строки из Андроида на сервер #3
Наверное, я немного сумбурно объяснил свою проблему.
Алгоритм следующий:
1. Приложение посылает стандартный запрос url на нужную страницу нужного сайта, например yandex.ru
2. В ответ на запрос сайт отправляет стандартную html-строку, аналогично ответу на запрос из любого браузера.
3. Приложение получает эту строку, сохраняет как строку и должно ее отправить на свой сервер для парсинга.
4. В ответ приложение получает результат парсинга, который выводится пользователю на экран.

Может возникнуть вопрос, зачем такие ухищрения? Согласен, можно парсить в самом приложении с помощью библиотеки jsoup. Но в любой момент на сайте может измениться структура и парсинг перестанет работать. Придется обновлять само приложение, что негативно. А так я всегда смогу оперативно изменить правила парсинга на сервере и пользователи ничего не почувствуют.

с п1 по п.3 все работает отлично, но почему-то появились проблемы с передачей страницы html в виде строки на свой сервер.

К сожалению, пока не смог разобраться из-за побочных дел, отвлекающий от главного

Последнее, что пробовал был метод Html.fromHtml, но результат негативный. Хотя еще позже снова попробую кое-какие идеи.
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
25.08.2016, 17:04     Передача HTML как строки из Андроида на сервер #4
Alexvp как скрипт достает эту самую HTML-строку из вашего запроса?
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
25.08.2016, 20:31  [ТС]     Передача HTML как строки из Андроида на сервер #5
Скрипт на моем сервере? Приложение передает ему эту строку методом POST. Это происходит в коде, который я привел в стартовом посту.
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
25.08.2016, 21:03     Передача HTML как строки из Андроида на сервер #6
Alexvp, вы не можете показать как он вычитывает строку? Тогда идей нет. Порча наверное вот и не работает
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
25.08.2016, 21:26  [ТС]     Передача HTML как строки из Андроида на сервер #7
Секрета нет
Скрипт на php
PHP
1
2
//$html = trim($_POST['html']);
$html = mysql_real_escape_string($html, $conn);
Для тестирования я вообще убрал любую обработку строки и эхом строку отправляю назад в приложение
PHP
1
echo $_POST['html'];
Обычные строки обрабатываются отлично, а вот строка, содержащая html не проходит
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
26.08.2016, 09:21     Передача HTML как строки из Андроида на сервер #8
Alexvp, а теперь покажите где же в вашем клиентском коде идет отправка переменной html
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
27.08.2016, 06:11  [ТС]     Передача HTML как строки из Андроида на сервер #9
Цитата Сообщение от vxg Посмотреть сообщение
покажите где же в вашем клиентском коде идет отправка переменной html
Вот мой код, комменты внутри
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
    String html; // переменная активити для строки с кодом html страницы для парсинга
    
    
    ServerTaskWeb taskRequest = new ServerTaskWeb();
    taskRequest.execute(new String[]{webUrl}); // webUrl - адрес страницы сайта для парсинга
 
    private class ServerTaskWeb extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
            android.os.Debug.waitForDebugger();
            String response = "";
 
            for (String urlStr : urls) {
                //use URLConnection
                try {
                    URL url = new URL(urlStr);
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setUseCaches(false);
                    urlConnection.setDoInput(true);
                    urlConnection.setDoOutput(true);
 
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                    String s = "";
                    while ((s = bufferedReader.readLine()) != null) {
                        response += s;
                    }
                    bufferedReader.close();
 
                    urlConnection.disconnect();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            return response;
        }
 
        @Override
        protected void onPostExecute(String result) {
            html = result; // строка html страниц сайта для парсинга
            TextView note = (TextView)findViewById(R.id.scanNoteReq);
            note.setText(html); // вывод на экран приложения полученной строки. Все выводится в текстовом виде правильно
            // передаем строку для парсинга на сервер и ждем ответа
            ServerTaskMyServer taskSendServer = new ServerTaskMyServer();
            taskSendServer.execute(new String[]{"веб адрес скрипта на моем сервере"});
        }
    }
 
    private class ServerTaskMyServer extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
            String response = "";
            sendPost = "h=" + html; // строка с кодом html страницы для передачи методом POST
            for (String urlStr : urls) {
                //use URLConnection
                try {
                    URL url = new URL(urlStr);
                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                    urlConnection.setRequestMethod("POST");
                    urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
                    urlConnection.setRequestProperty("Content-Length", "" +
                            Integer.toString(sendPost.getBytes().length));
                    urlConnection.setRequestProperty("Content-Language", "en-US");
                    urlConnection.setUseCaches(false);
                    urlConnection.setDoInput(true);
                    urlConnection.setDoOutput(true);
 
                    DataOutputStream wr = new DataOutputStream(urlConnection.getOutputStream());
                    wr.writeBytes(sendPost);
                    wr.flush();
                    wr.close();
 
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                    String s = "";
                    while ((s = bufferedReader.readLine()) != null) {
                        response += s;
                    }
                    bufferedReader.close();
 
                    urlConnection.disconnect();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
 
 
            return response;
        }
 
        @Override
        protected void onPostExecute(String result) {
            TextView note = (TextView)findViewById(R.id.scanNoteReq);
            note.setText(result); // вывод на экран приложения ответа от сервера
        }
    }
Если я принудительно задаю значение переменной html, например, Hello, world!, то все отрабатывает отлично. А вот при html-коде на сервер ничего не передается.

Добавлено через 18 минут
Еще обнаружил, что при отправке методом POST строки с кириллицей, например банальной "Привет, мир!" происходит тоже самое - строка не передается на сервер.

Добавлено через 6 часов 27 минут
Причину проблемы нашел, осталось найти решение

Приложение не могло отправить код html в виде POST по причине кодировки. Дело в том, что в андроиде используется однобайтная кодировка, поэтому английские фразы проходили отлично. А кириллица и ряд других символов используют двухбайтную кодировку utf. Когда я убрал строчку
Java
1
2
urlConnection.setRequestProperty("Content-Length", "" +
                            Integer.toString(sendPost.getBytes().length));
то запросы стали уходить, но проблема с кириллицей осталась.

Да, для отправки кода html в виде строки POST пришлось предварительно очищать от тегов с помощью
Java
1
html = Html.fromHtml(result).toString();
У кого-нибудь есть мысли насчет того, как корректно передать кириллицу? Сейчас из-за однобайтного года получаю неверный результат. Сообразить не могу, так как на моих часах 4.43 утра

Добавлено через 1 час 24 минуты
остался последний шаг

Дошло, что надо использовать URLEncoder.encode, но тут вылезла еще одна проблемка.
Когда использую так
Java
1
URLEncoder.encode("Вася Пупкин");
то все работает великолепно. Однако в таком виде это deprecated, рекомендуется такая конструкция
Java
1
2
3
4
5
6
7
           try {
                phrase = URLEncoder.encode(("Вася Пупкин"), "utf-8");
 
                return phrase;
            } catch (UnsupportedEncodingException e) {
 
            }
Логично, но тут подвох. Вместо "Васи Пупкина" я получаю набор в виде %D0%92...
Пишу в студии, кодировка стоит utf-8

Добавлено через 3 минуты
На всякий случай полный скрипт на моем сервере
PHP
1
2
3
4
5
6
7
<?php
header('Content-type: text/html; charset=utf-8');
 
echo $_POST['h'];
 
exit;
?>
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
27.08.2016, 18:46     Передача HTML как строки из Андроида на сервер #10
Alexvp, лично я делаю так (может что то вам пригодится) - правда тут чистые сокеты + сервер обязан отдавать заголовок Content-Length
код для POST-запроса
Кликните здесь для просмотра всего текста
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
    public static boolean equals(byte[] a, String bStr) {
        try {
            byte[] b = bStr.getBytes("UTF-8");
            if (a.length < b.length) return false;
            for (int i = 0; i < b.length; i++) {
                if (a[i] != b[i]) {
                    return false;
                }
            }
            return true;
        } catch (UnsupportedEncodingException e) {
        }
        return false;
    }
 
    public static int indexOf(byte[] a, String bStr, int off) {
        try {
            byte[] b = bStr.getBytes("UTF-8");
            if (a.length - off < b.length) return -1;
            int posMax = a.length - b.length;
            for (int pos = off; pos <= posMax; pos++) {
                boolean found = true;
                for (int i = 0; i < b.length; i++) {
                    if (a[pos + i] != b[i]) {
                        found = false;
                        break;
                    }
                }
                if (found) return pos;
            }
            return -1;
        } catch (UnsupportedEncodingException e) {
        }
        return -1;
    }
    
    public static byte[] getBoundary(byte[] boundary, byte[] data) {
        try {
            ByteArrayOutputStream bs = new ByteArrayOutputStream();
            bs.write(boundary);
            byte[] res = bs.toByteArray();
            if (data.length == 0) {
                if (bs.size() == 0) {
                    bs.write('A');
                    res = bs.toByteArray();
                }
            } else {
                if (bs.size() == 0) {
                    byte c = data[0];
                    c++;
                    if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9')) {
                        bs.write(c);
                    } else {
                        bs.write('A');
                    }
                    res = bs.toByteArray();
                }
                
                for (int i = 0; i < data.length; i++) {
                    if (bs.size() > data.length - i) break;
    
                    boolean good = false;
                    for (int j = 0; j < bs.size(); j++) {
                        if (res[j] != data[i + j]) {
                            good = true;
                            break;
                        }
                    }
                    if (!good) {
                        if (bs.size() == data.length - i) {
                            bs.write('A');
                        } else {
                            byte c = data[i + bs.size()];
                            c++;
                            if (('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z') || ('0' <= c && c <= '9')) {
                                bs.write(c);
                            } else {
                                bs.write('A');
                            }
                        }
                        res = bs.toByteArray();
                    }
                }
            }
            return res;
        } catch (IOException e) {
        }
        return null;
    }
    
    public static byte[] part(byte[] a, int beg, int end) {
        int n = end - beg + 1;
        byte[] res = new byte[n];
        for (int i = 0; i < n; i++){
            res[i] = a[i + beg];
        }
        return res;
    }
    
    public static byte[] post(String doc, byte[] data, String boundaryStr, String localCopy) {
        byte[] res = null;
        
        if (socket == null) {
            App.log("CREATE NEW SOCKET");
            
            SocketAddress addr = new InetSocketAddress(host, hostPort);
            socket = new Socket();
            
            try {
                socket.connect(addr, 0);
                if (!socket.isConnected()) {
                    socket = null;
                    return res;
                }
            } catch (IOException e) {
                socket = null;
                return res;
            }
 
            App.log("CONNECTED");
        }
        
        OutputStream os = null;
        InputStream is = null;
        try {
            os = socket.getOutputStream();
            is = socket.getInputStream();
        } catch (IOException e) {
            abort();
            return res;
        }
        
        try {
            os.write(new String(
                "POST http://" + host + ":" + hostPort + doc + " HTTP/1.0\r\n" +
                "Host: " + host + ":" + hostPort + "\r\n" +
                "Content-Type: multipart/form-data; boundary=" + boundaryStr + "\r\n" +
                "Content-Length: " + data.length + "\r\n" +
                "Connection: Keep-alive\r\n" +
                "\r\n").getBytes("UTF-8")
            );
            os.write(data);
            os.flush();
        } catch (UnsupportedEncodingException e) {
            abort();
            return res;
        } catch (IOException e) {
            abort();
            return res;
        }
        
        System.gc();
        byte[] buffer = new byte[0xF000];
        FileOutputStream fs = null;
        if (localCopy != null) {
            try {
                fs = new FileOutputStream(new File(localCopy));
            } catch (FileNotFoundException e) {
                abort();
                return res;
            }
        }
        ByteArrayOutputStream cs = new ByteArrayOutputStream();
        String tag = "HTTP/1.1 200 OK";
        int contentLength = -1;
        int headerLength = -1;
        int size = 0;
        while (!Thread.currentThread().isInterrupted()) {
            try {
                int length = is.read(buffer);
                if (length != -1) {
                    if (contentLength < 0 || fs == null) {
                        cs.write(buffer, 0, length);
                    } else {
                        fs.write(buffer, 0, length);
                    }
                    size += length;
                }
            } catch (IOException e) {
                abort();
                return res;
            }
            if (contentLength < 0) {
                if (cs.size() >= tag.length()) {
                    byte[] content = cs.toByteArray();
                    if (!equals(content, tag)) {
                        break;
                    }
                    int contentBeg = indexOf(content, "\r\n\r\n", 0);
                    if (contentBeg > 0) {
                        headerLength = contentBeg + 4;
                        int contentLengthBeg = indexOf(content, "Content-Length:", 0);
                        if (contentLengthBeg < 0) {
                            break;
                        }
                        int contentLengthEnd = indexOf(content, "\r\n", contentLengthBeg);
                        if (contentLengthEnd < 0) {
                            break;
                        }
                        try {
                            contentLength = Integer.parseInt(new String(part(content, contentLengthBeg + 15, contentLengthEnd - 1), "UTF-8").trim());
                            if (fs != null) {
                                try {
                                    fs.write(part(cs.toByteArray(), headerLength, cs.size() - 1));
                                } catch (IOException e) {
                                    abort();
                                    return res;
                                }
                            }
                        } catch (UnsupportedEncodingException e) {
                            break;
                        } catch (NumberFormatException e) {
                            break;
                        }
                    }
                }
            }
            if (contentLength != -1 && headerLength + contentLength == size) {
                if (fs == null) {
                    res = part(cs.toByteArray(), headerLength, cs.size() - 1);
                } else {
                    try {
                        fs.flush();
                        fs.close();
                    } catch (IOException e) {
                        abort();
                        return res;
                    }
                    res = new byte[0];
                }
                break;
            }
        }
                
        return res;
    }
    
    public static String getBoundaryStr(ArrayList<byte[]> args) {
        byte[] boundary = new byte[0];
        
        for (int i = 0; i < args.size(); i++) {
            boundary = getBoundary(boundary, args.get(i));
        }
 
        try {
            return new String(boundary, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            return null;
        }
    }
    
    public static byte[] getData(ArrayList<byte[]> args, String boundaryStr) {
        byte[] separator = null;
        byte[] endl = null;
        byte[] terminator = null;
        try {
            separator = ("--" + boundaryStr + "\r\n").getBytes("UTF-8");
            endl = ("\r\n").getBytes("UTF-8");
            terminator = ("--" + boundaryStr + "--\r\n").getBytes("UTF-8");
        } catch (UnsupportedEncodingException e) {
            return null;
        }
        
        ByteArrayOutputStream cs = new ByteArrayOutputStream();
        try {
            for (int i = 0; i < args.size(); i++) {
                cs.write(separator);
                cs.write(args.get(i));
                cs.write(endl);
            }
            cs.write(terminator);
        } catch (IOException e) {
            return null;
        }
        return cs.toByteArray();
    }

пример использования
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
        ArrayList<byte[]> args = new ArrayList<byte[]>();
 
        try {
            args.add((
            "Content-Disposition: form-data; name=тут_бэк_слеш"arg1тут_бэк_слеш"\r\n" + 
            "\r\n" + 
            arg1
            ).getBytes("UTF-8"));
 
            args.add((
            "Content-Disposition: form-data; name=тут_бэк_слеш"arg2тут_бэк_слеш"\r\n" + 
            "\r\n" + 
            arg2
            ).getBytes("UTF-8"));
        } catch (UnsupportedEncodingException e) {
            return;
        }
            
        String boundaryStr = getBoundaryStr(args);
        if (boundaryStr == null) {
            return;
        }
        
        byte[] data = getData(args, boundaryStr);
        if (data == null) {
            return;
        }
        
        byte[] res = post("/test.php", data, boundaryStr, null);
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
27.08.2016, 20:50  [ТС]     Передача HTML как строки из Андроида на сервер #11
Спасибо, но как-то к сокетам не предрасположен

Задачу решил, просто под утро зачем-то указал возврат внешней переменной из конструкции try для URLEncoder.encode. Теперь "Вася Пупкин" передается без проблем.
vxg
Модератор
3138 / 1940 / 214
Регистрация: 13.01.2012
Сообщений: 7,428
27.08.2016, 21:25     Передача HTML как строки из Андроида на сервер #12
Alexvp, сокеты если у вас на них аллергия можете не применять просто посмотрите на подход при котором данные идут в multipart/form-data и нет проблем ни с кодировками ни с недопустимыми символами
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
27.08.2016, 22:55  [ТС]     Передача HTML как строки из Андроида на сервер #13
Спасибо, попробую проверить завтра.
Pablito
2453 / 1898 / 590
Регистрация: 12.05.2014
Сообщений: 6,700
Завершенные тесты: 1
28.08.2016, 10:22     Передача HTML как строки из Андроида на сервер #14
почему бы просто не дергать какой-то метод на сервере и пусть сервер сам читает данные, парсит, а потом отдает уже пережеванное и переваренное клиенту?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2016, 18:39     Передача HTML как строки из Андроида на сервер
Еще ссылки по теме:

Передача данных из editView в html форму - Программирование Android
Кто знает как такое сделать? Делаю поиск по слову, и мне нужно что бы слово вписывалось в форму на одном из сайтов, как переадресовать его...

Программы для андроида - Программирование Android
Вот хотел спросить на каком языке пишуть программы для андроида? Лазил в инети нашел что на java, но java пакуется в формат jar,...

Верстка для андроида - Программирование Android
Нужна ваша помощь, а именно студента для верстки под андроид.

Эмулятор Андроида и сокеты - Программирование Android
День добрый. Решил все же создать тему... Запускаю типовый пример с сокетами. Из двух консолек работает прекрасно. Прописываю я...

2d игра для андроида - Программирование Android
Здрасте, подскажите трудно ли будет напистаь что то вроде человечек бежит и на встречу ему кубики и он должен перепрыгивать, трудно ли...


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

Или воспользуйтесь поиском по форуму:
Alexvp
107 / 71 / 8
Регистрация: 03.08.2014
Сообщений: 344
28.08.2016, 18:39  [ТС]     Передача HTML как строки из Андроида на сервер #15
Это был первый вариант алгоритма, но решил от него отказаться. В данном парсинге нет ничего криминального, более того, пользователь знает откуда берется информация. И более того, сайт-донор специально создан для предоставления этой информации пользователям.
Но. Всякое может быть, если слать запросы пользователей через свой единый сервер, то будут запросы идти с одного IP-адреса и хрен его знает, что в голову взбредет админу сервера. Посчитает какой-нибудь дидос-атакой и забанит.
В реализуемом алгоритме запросы идут с разных IP-адресов, полностью соответствуя обычной схеме работы с этим ресурсом.
Yandex
Объявления
28.08.2016, 18:39     Передача HTML как строки из Андроида на сервер
Ответ Создать тему
Опции темы

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