Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Хард
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
1

Русский Post запрос в базу через http

27.04.2015, 17:57. Просмотров 1849. Ответов 11
Метки нет (Все метки)

Кто в курсе этого метода связи с БД на удаленном сервере, как через POST отправить переменные с русскими буквами? Английский воспринимает на ура, символы тоже, но как только дело доходит до Русского языка, программа просто не выполняет этот самый 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
 public static String executePost(String targetURL, String urlParameters) {
        URL url;
        HttpURLConnection connection = null;
        try {
            //Create connection
            url = new URL(targetURL);
            connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Content-Type",
                    "application/x-www-form-urlencoded");
 
            connection.setRequestProperty("Content-Length", "" +
                    Integer.toString(urlParameters.getBytes().length));
 
 
            connection.setUseCaches (false);
            connection.setDoInput(true);
            connection.setDoOutput(true);
 
            //Send request
            DataOutputStream wr = new DataOutputStream (
                    connection.getOutputStream ());
            wr.writeBytes (urlParameters);
            wr.flush ();
            wr.close ();
 
            //Get Response
            InputStream is = connection.getInputStream();
            BufferedReader rd = new BufferedReader(new InputStreamReader(is));
            String line;
            StringBuffer response = new StringBuffer();
            while((line = rd.readLine()) != null) {
                response.append(line);
                response.append('\r');
            }
            rd.close();
            return response.toString();
 
        } catch (Exception e) {
 
            e.printStackTrace();
            return null;
 
        } finally {
 
            if(connection != null) {
                connection.disconnect();
            }
        }
    }
код передачи переменных:
Java
1
String result = executePost("http://тут адрес сайта", "name=Привет"....вот тут самое главное);
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2015, 17:57
Ответы с готовыми решениями:

Http POST запрос, как правильно написать
Добрый день, мне нужно отправить данные на сервер, посредством http post запросом, нужно добавить...

Как передать переменные через http.Send (post запрос)
Здравствуйте уважаемые форумчане! Имеется макрос для передачи данных в php скрипт, сейчас...

русский текст и POST запрос
Пытаюсь произвести POST запрос на сайт. Если забивать текст руками прямо в файл скрипта, т.е....

Post запрос - русский текст
Помогите пожалуйста разобраться QNetworkRequest request; ...

HTTP запрос и POST
Нужно сделать запрос методом POST, делаю так: var val1 = 1; var val2 = 2; var xmlHttpReq = new...

11
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 257
28.04.2015, 09:21 2
кодировку файла самого кода поставь UTF-8. у тебя же жестко вшитый код, вот он и пытается отправить win-1251 кодировку туда, где ждут utf-8
0
dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
28.04.2015, 21:27 3
Я конвертил русские символы на клиенте в UTF-8, так получается двойная кодировка. А на сервере, делал обратную процедуру уже средствами php. Есть код на VBA, думаю разберетесь. Писал я его с java примера.
Кликните здесь для просмотра всего текста
Visual Basic
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
'************************************************************************************
'********Набор функций для кодирования русских символов для передачи в скрипт php****
'************************************************************************************
Public Function URLEncode(url As String) As String
    URLEncode = URLEncodeByUTF8(EncodeUTF8(url))
End Function
 
Public Function URLEncodeByUTF8(sRawURL As String) As String
On Error GoTo Catch
Dim iLoop As Integer
Dim sRtn As String
Dim sTmp As String
Const sValidChars = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz:/.?=_-$(){}~&"
 
    If Len(sRawURL) > 0 Then
        For iLoop = 1 To Len(sRawURL)
            sTmp = Mid(sRawURL, iLoop, 1)
            If InStr(1, sValidChars, sTmp, vbBinaryCompare) = 0 Then
                ' If not ValidChar, convert to HEX and prefix with %
                sTmp = Hex(Asc(sTmp))
                If sTmp = "20" Then
                    sTmp = "+"
                ElseIf Len(sTmp) = 1 Then
                    sTmp = "%0" & sTmp
                Else
                    sTmp = "%" & sTmp
                End If
            End If
            sRtn = sRtn & sTmp
        Next iLoop
        URLEncodeByUTF8 = sRtn
     End If
Finally:
     Exit Function
Catch:
     URLEncodeByUTF8 = ""
     Resume Finally
End Function
 
Function ToLong(intVal) As Long
    If intVal < 0 Then
        ToLong = CLng(intVal) + &H10000
    Else
        ToLong = CLng(intVal)
    End If
End Function
 
'кодируем символы в UTF-8
Function EncodeUTF8(s$) As String
Dim i, c, utfc, b1, b2, b3
    For i = 1 To Len(s)
        c = ToLong(AscW(Mid(s, i, 1)))
 
        If c < 128 Then
            utfc = Chr(c)
        ElseIf c < 2048 Then
            b1 = c Mod &H40
            b2 = (c - b1) / &H40
            utfc = Chr(&HC0 + b2) & Chr(&H80 + b1)
        ElseIf c < 65536 And (c < 55296 Or c > 57343) Then
            b1 = c Mod &H40
            b2 = ((c - b1) / &H40) Mod &H40
            b3 = (c - b1 - (&H40 * b2)) / &H1000
            utfc = Chr(&HE0 + b3) & Chr(&H80 + b2) & Chr(&H80 + b1)
        Else
            utfc = Chr(&HEF) & Chr(&HBF) & Chr(&HBD) 'Младший или старший суррогат UTF-16
        End If
 
        EncodeUTF8 = EncodeUTF8 + utfc
    Next
End Function
'************************************************************************************
'************************************************************************************


В итоге строка вида:
HTML5
1
http://mysite.ru/scripts.php?name=Привет
Должна выглядеть так:
HTML5
1
http://mysite.ru/scripts.php?name=%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82
Добавлено через 9 минут
Ну а в самом php-скрипте используется функция urldecode
PHP/HTML
1
echo urldecode('%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82');
Результатом будет: Привет
1
Хард
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 22:56  [ТС] 4
dubok79, если первый код это образец, то, я так понимаю, надо писать отдельную процедуру. А стандартные методы кодирования-декодирования есть???
0
28.04.2015, 22:56
dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
28.04.2015, 22:58 5
Цитата Сообщение от Хард Посмотреть сообщение
надо писать отдельную процедуру
надо и не одну
Цитата Сообщение от Хард Посмотреть сообщение
А стандартные методы кодирования-декодирования есть???
Со стороны клиента вроде бы нет. Я уже не помню.
0
Хард
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 23:03  [ТС] 6
dubok79, хорошо, а если, допустим, запрос переводить в транслит, а на сервере обратно?
0
dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
28.04.2015, 23:05 7
Тот же хрен только вид сбоку

Добавлено через 1 минуту
к тому же на php уже есть функция декодирования, а тут вам придется писать одно и тоже с двух сторон, да и наверное будут какие то косяки...навскидку не скажу
0
Хард
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 23:05  [ТС] 8
dubok79, вот же блин засада. Везет американцам, им ничего переводить не надо.
0
dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
28.04.2015, 23:06 9
не вижу сложностей
0
Хард
0 / 0 / 0
Регистрация: 24.06.2013
Сообщений: 49
28.04.2015, 23:15  [ТС] 10
dubok79, для меня сложность в том, чтобы разобраться с этим, а времени в обрез.
0
androbro
358 / 314 / 72
Регистрация: 17.10.2014
Сообщений: 923
29.04.2015, 08:55 11
Хард, не особо углубляясь:
а связка
Java
1
URLEncoder.encode()
на клиенте и php на сервере
PHP
1
urldecode()
разве не оно?
1
dubok79
325 / 123 / 10
Регистрация: 01.11.2012
Сообщений: 586
29.04.2015, 09:22 12
И все же перед использованием почитайте про русские символы. Все таки URLEncoder не для них писан, а что бы экранировать спец символы. Например тут почитайте.
1
29.04.2015, 09:22
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2015, 09:22

HTTP-POST запрос.
Ниже приведенный код отправляет POST запрос. Проблема в том, что в ответ принимаются не все...

HTTP Post запрос в Qt Android
Qt 5.10.1 OS Windows 7 Разработка под Андроид Добрый день, пишу программу на Qt под Андроид....

HTTP Post запрос Java
Здравствуйте, подскажите в чем проблема? Необходимо реализовать передачу параметров от Клиента...


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

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

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