отправка POST и символ "&"

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
NightStorm
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 09.06.2008 (Пн) 18:30

отправка POST и символ "&"

Сообщение NightStorm » 20.06.2008 (Пт) 11:14

Для отправки POST запроса использую WebBrowser.

Вот код:
Код: Выделить всё
Headers = "Content-Type: application/x-www-form-urlencoded" & vbCrLf
PData = "To=" & txtReceiver.text & "&Subject=" & txtSubj.text & "&Message=" & txtMess.text
PData = StrConv(PData, vbFromUnicode)
wbSend.Navigate "http://www.some_site.ru/index.php?src=contact&sub=create", , , PData, Headers


Так вот. Это всё нормально работает до тех пор, пока в текстовом поле для написания "тела" письма (txtMess в моем коде) не появляется символ "&". При отправке письма с этим символом письмо отправляется, но только до этого символа, после него ничего больше нет (и "&" тоже).

Собстна вопрос: как с этим бороться?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.06.2008 (Пт) 11:24

NightStorm
Глупо как-то. Делать POST-запросы и не знать, какое значение имеет символ & в POST- и GET- запросах. А значение он имеет наиважнейшее: она разделяет между собой пары переменная=значение.

Собстна вопрос: как с этим бороться?

Не допускать появление символа & в значении переменной. Вообще, твой код крив и отстоен в том плане, что ты не делаешь urlencoding. Отсюда все беды, включая эту.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

NightStorm
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 09.06.2008 (Пн) 18:30

Сообщение NightStorm » 20.06.2008 (Пт) 11:41

Глупо как-то. Делать POST-запросы и не знать, какое значение имеет символ & в POST- и GET- запросах. А значение он имеет наиважнейшее: она разделяет между собой пары переменная=значение.

Это-то я знаю, я наверна неправильно вопрос задал. Я хотел узнать, что можно сделать с запросом, чтоб он не убивался об этот символ и чтобы "&" сохранялось потом в письме. И как этот urlencoding делать? Мож статейка какая есть (тока хорошая)?


твой код крив и отстоен

Сам знаю ) Я просто пока ещё тока учусь....

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.06.2008 (Пт) 11:45

Зайди в гугл и набери слово "black&white". Нажми "Искать" и посмотри что будет со строкой запроса в броузере между слов "black" и "white".

Чтобы научиться чему-то, не надо никаких статей. Достаточно исследовательского духа и сообразительности (в данном случае, чтобы посмотреть, а как это делается в других местах).
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 20.06.2008 (Пт) 12:21

2 NightStorm:
Хакер дело говорит :). Разберитесь в форматах передачи данных GET-ом и POST-ом. и в заголовках.

Советую обратить внимание на http://bbs.vbstreets.ru/viewtopic.php?t=35421 и http://forum.script-coding.info/viewtopic.php?id=158

С кодированием, я думаю Вам поможет вот такая функция

Код: Выделить всё
    Private Function URLEncode(Data)
        Dim CharPosition, CharCode
        For CharPosition = 1 To Len(Data)
            CharCode = Asc(Mid(Data, CharPosition, 1))
            If CharCode = 32 Then
                URLEncode = URLEncode + "+"
            ElseIf (CharCode < 48 Or CharCode > 126) Or (CharCode > 56 And CharCode <= 64) Then
                URLEncode = URLEncode + "%" + Right("0" & Hex(CharCode), 2)
            Else
                URLEncode = URLEncode + Chr(CharCode)
            End If
        Next
    End Function

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 20.06.2008 (Пт) 12:30

А я думаю, что с кодирванием поможет специально предназначенная для этого InternetCanonicalizeUrl.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 20.06.2008 (Пт) 12:47

Хакер писал(а):А я думаю, что с кодирванием поможет специально предназначенная для этого InternetCanonicalizeUrl.


Ммм :) А я и не знал про такую. Буду записать ). Пасиба :roll:

NightStorm
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 09.06.2008 (Пн) 18:30

Сообщение NightStorm » 20.06.2008 (Пт) 13:23

Огромное вам спасибо!!!
Теперь всё понял )


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42

    TopList