Эмуляция отправки WEB формы через XmlHttp в VBScript

Здесь можно найти готовые «кирпичики» — части кода, пригодные для построения более крупных проектов, а также решения различных типовых и не очень задач на VB.

Модератор: Brickgroup

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

Эмуляция отправки WEB формы через XmlHttp в VBScript

Сообщение ALX_2002 » 31.12.2007 (Пн) 1:42

Заранее извиняюсь за название темы. Надеюсь админы почитают - скажут как переименовать или сами переименуют. :roll:
В общем решил реализовать класс эмуляции отправки формы из VBScript через XmlHttp. В принципе примеров полным полно. Но ни где подроно не разобрано как отправлять файлы. Да и универсального класса ни где не находил. Вот и решил написать + сделать у формы такие же свойства как у обычного HTMLFormElement.

Весь код расписал с подробными комментариями

Вот пример отправки файла на сайт http://www.zalil.ru

Кто опробует - отпишитесь пожалуйта :)

Код: Выделить всё
'Описание класса FormClass
   
'Пример создания: "Set WebForm = New WebFormClass"
   
'Form.Action             ' Свойство - URL на который будут отправлены данные. (чтение/запись)
'Form.AddField           ' Процедура - Добавление поля.
'Form.AddFile            ' Процедура - Добавление файла.
'Form.Boundary           ' Свойство - Разделитель между данными (чтение)
'Form.Enctype            ' Свойство - Тип кодирования формы (Для отправки полей - "application/x-www-form-urlencoded". Для отправки полей и файлов - "multipart/form-data") (чтение/запись)
'Form.Method             ' Свойство - Метод отправки данных (GET / POST)
'Form.VarBody            ' Свойство - Сформированные данные для отправки (чтение/запись)

'Пример отправки файла на сайт http://www.zalil.ru
   
Dim WebForm
'/// Создаём новый класс формы
Set WebForm = New WebFormClass
'/// Указываем куда будем отправлять данные
WebForm.Action = "http://www.zalil.ru/upload/"
'/// Устанавливаем метод передачи POST
WebForm.Method = "POST"
'/// Для того чтобы передались файлы устанавливаем тип кодирования multipart/form-data
WebForm.Enctype = "multipart/form-data"
'/// Добавляем файл
WebForm.AddFile "file", "C:\boot.ini"
'/// Запускаем процедуру отправку     
Submit WebForm

Sub Submit(WebForm)
    '/// Создаём объект отправки данных
    Dim XMLHTTP
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    '/// Открываем соединение с URL
    XMLHTTP.Open WebForm.Method, WebForm.Action, False
    '/// Если тип передачи данных POST, то добавляем к пакету заголовки
    If WebForm.Method = "POST" Then
        '/// Если отправляем с кодированием "multipart/form-data", то добавляем информацию о разделителе данных
        If WebForm.Enctype = "multipart/form-data" Then
            XMLHTTP.setrequestheader "Content-type", WebForm.Enctype & "; boundary=" & WebForm.Boundary
        Else '/// В ином случае добавляем информацию о том, что данные отправляются формой
            XMLHTTP.setrequestheader "Content-type", WebForm.Enctype
        End If
    End If
   
    '/// Отправляем запрос
    XMLHTTP.Send WebForm.VarBody
    '/// Смотрим статус ответа
    Select Case XMLHTTP.Status
    '/// Если 200 - OK. Данные переданы успешно
    Case 200
        Dim InternetExplorer
        Set InternetExplorer = CreateObject("InternetExplorer.Application")
        InternetExplorer.Visible = True
        InternetExplorer.Navigate "about:blank"
        Do
                        WScript.Sleep 100
        Loop Until InternetExplorer.readystate = 4
        InternetExplorer.document.write XMLHTTP.responsetext
    Case Else
        MsgBox XMLHTTP.Status & " " & StatusText, vbCritical, "Ошибка при передаче данных !"
    End Select
End Sub


'/// Класс формы
Class WebFormClass
        Private Fields, Files
        Private PropertyEnctype, PropertyMethod, PropertyBoundary, PropertyAction

        Private Sub Class_Initialize()
            Fields = Array()
            Files = Array()
            PropertyEnctype = "application/x-www-form-urlencoded"
            PropertyMethod = "GET"
            PropertyBoundary = String(27, "-") & GenerateBoundary
            PropertyAction = "about:blank"
        End Sub

        Public Property Let Action(Value)
            PropertyAction = Value
        End Property

        Public Property Get Action()
            Action = PropertyAction
            If PropertyMethod = "GET" Then
                Dim Params
                Params = VarBody
                If VarBody <> "" Then Action = Action & "?" & Params
            End If
        End Property

        Public Property Get Boundary()
            Boundary = PropertyBoundary
        End Property

        Public Property Get Method()
            Method = PropertyMethod
        End Property

        Public Property Let Method(Value)
            Value = UCase(Value)
            If Value = "GET" Or Value = "POST" Then PropertyMethod = Value
        End Property

        Public Property Get Enctype()
            Enctype = PropertyEnctype
        End Property

        Public Property Let Enctype(Value)
            Value = LCase(Value)
            If Value = "multipart/form-data" Or Value = "application/x-www-form-urlencoded" Then PropertyEnctype = Value
        End Property

        Public Sub AddField(Name, Value)
            SetElement Fields, Name, Value
        End Sub

        Public Sub AddFile(Name, Value)
            SetElement Files, Name, Value
        End Sub

        Private Function SetElement(ArrayRef, Name, Value)
            For ElementID = 0 To UBound(ArrayRef)
                If ArrayRef(ElementID)(0) = Name Then
                    ArrayRef(ElementID)(1) = Value
                    Exit Function
                End If
            Next
            ReDim Preserve ArrayRef(UBound(ArrayRef) + 1)
            ArrayRef(UBound(ArrayRef)) = Array(Name, Value)
        End Function
         

        Public Property Get VarBody()
            If PropertyMethod = "POST" And PropertyEnctype = "multipart/form-data" Then
                Const DefaultBoundary = "--"
                Dim Stream
                Set Stream = CreateObject("ADODB.Stream")
                Stream.Type = 2
                Stream.Mode = 3
                Stream.Charset = "Windows-1251"
                Stream.Open
               
                Dim FieldHeader, FieldsBody
               
                For Each Field In Fields
                    FieldHeader = "Content-Disposition: form-data; name=""" & Field(0) & """"
                    FieldsBody = FieldsBody & DefaultBoundary & PropertyBoundary & vbCrLf & FieldHeader & vbCrLf & Field(1) & vbCrLf
                Next
               
                Stream.WriteText FieldsBody
               
                Dim FileHeader
               
                For Each File In Files
                    If LoadFile(File(1), Data) Then
                        FileHeader = DefaultBoundary & Boundary & vbCrLf & "Content-Disposition: form-data; name=""" & File(0) & """; filename=""" & File(1) & """" & vbCrLf & "Content-Type: octet/stream" & vbCrLf & vbCrLf
                        Stream.WriteText FileHeader
                        Stream.Position = 0
                        Stream.Type = 1
                        Stream.Position = Stream.Size
                        Stream.write Data
                        Stream.Position = 0
                        Stream.Type = 2
                        Stream.Position = Stream.Size
                    End If
                Next
               
                Stream.Position = 0
                Stream.Type = 2
                Stream.Position = Stream.Size
                Stream.WriteText vbCrLf & DefaultBoundary & PropertyBoundary & DefaultBoundary
               
                Stream.Position = 0
                Stream.Type = 1
               
                VarBody = Stream.Read
            Else
                For Each Field In Fields
                    VarBody = VarBody & Escape(Field(0)) & "=" & Escape(Field(1)) & "&"
                Next
                For Each File In Files
                    VarBody = VarBody & Escape(File(0)) & "=" & Escape(File(1)) & "&"
                Next
                if Len(VarBody) > 0 Then VarBody = Left(VarBody, Len(VarBody) - 1)
            End If
        End Property

        Private Function LoadFile(Path, Data)
            On Error Resume Next
            Dim Stream
            Set Stream = CreateObject("ADODB.Stream")
            Stream.Type = 1
            Stream.Mode = 3
            Stream.Open
            Stream.LoadFromFile Path
            If Err.Number <> 0 Then Exit Function
            Data = Stream.Read
            LoadFile = True
        End Function

        Private Function GenerateBoundary()
            Dim Char
            Dim N
            For N = 1 To 12
                Randomize
                Char = Chr(CLng(Rnd * 25) + 97)
                If N Mod 2 Then Char = UCase(Char)
                GenerateBoundary = GenerateBoundary & Char
            Next
        End Function
End Class
Вложения
WebForm.zip
(2.36 Кб) Скачиваний: 599
Последний раз редактировалось ALX_2002 03.02.2008 (Вс) 12:37, всего редактировалось 7 раз(а).

SCINER
Новичок
Новичок
Аватара пользователя
 
Сообщения: 25
Зарегистрирован: 27.01.2005 (Чт) 20:46
Откуда: Казань

Сообщение SCINER » 31.12.2007 (Пн) 1:52

Работает!

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 31.12.2007 (Пн) 11:52

ALX_2002
Лучше оформи в *.vbs и приаттач. Простыня длинновата.
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение ALX_2002 » 04.01.2008 (Пт) 22:09

to Antonariy: Сделал. Портянку на всякий случай тоже оставил. Пускай будет. С ней проще :)

А как работает то ? :)

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

Сообщение ALX_2002 » 23.01.2008 (Ср) 17:06

Апдейтнул код. :)
1) Убрал ненужную функцию конвертации и использование Scripting.Dictionary, что значительно сократило код :)

2) Расписал свойства и методы формы. :)

claymen
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 14.04.2006 (Пт) 16:07
Откуда: КЫРГЫЗСТАН г.Бишкек

Сообщение claymen » 06.07.2008 (Вс) 6:54

ALX_2002
Здравствуйте! Вот прочитал Ваш топик http://bbs.vbstreets.ru/viewtopic.php?t=35421 (Эмуляция отправки WEB формы через XmlHttp в VBScript).
У меня к Вам такой вопрос: мне необходимо создать два поля (UserName и Password), отправить их на некий хост и получить ответ в виде HTML. Как это можно реализовать в Visualbasic 6 с помощью Вашего кирпичика?
и начинали мы все чайниками, но потом...

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

Сообщение ALX_2002 » 06.07.2008 (Вс) 12:42

2 claymen:
Доброго времени суток. :) Я думаю вам нужен XMLHTTP.responseText, который вы как раз и сможете обработать. Но думаю для удобства парсинга лучше выгрузить HTML код в HTMLDocument, чтобы сразу получить готовую объектную модель.

сделать это можно так:
Код: Выделить всё

'// Выше делаем запрос как в коде "кирпича"
'// Создаём объект
Set HTMLDocument = CreateObject("htmlfile")
'// Инициируем создание BODY внутри документа
HTMLDocument.open
HTMLDocument.close
'// Заполняем его данными
HTMLDocument.body.innerhtml = XMLHTTP.responseText
'// Работаем с объектной моделью, как захочется :)
MsgBox HTMLDocument.body.children.length


P.S Писал код без VB редактора, поэтому возможно где то мог ошибиться. К сожале.... к счастью )) нахожусь на даче.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 06.07.2008 (Вс) 14:29

Лучше не HTMLDocument.body.innerhtml = XMLHTTP.responseText, а HTMLDocument.write XMLHTTP.responseText
Лучший способ понять что-то самому — объяснить это другому.

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

Сообщение ALX_2002 » 07.07.2008 (Пн) 12:03

Возможно я не прав, но я как раз не люблю так делать.[Document.write] :), потому что при этом выполняются скрипты в коде HTML-ки и если в них есть ошибки, то пользователю на экран начинают лезть сообщения о них, а если в боди передать текст через innerhtml, то скрипты не обрабатываются. :roll:

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 07.07.2008 (Пн) 12:28

Тогда уж лучше в body засовывать содержимое body, а не весь html. Правда пропадут стили, если они есть в хедере. Хотя с другой стороны они не нужны, если документ отображаться не будет.
Или весь html в document.documentElement.outerHTML.
Лучший способ понять что-то самому — объяснить это другому.

claymen
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 14.04.2006 (Пт) 16:07
Откуда: КЫРГЫЗСТАН г.Бишкек

Сообщение claymen » 07.07.2008 (Пн) 18:38

ALX_2002
Что-то совсем не получается... :(
Вот код и проект в аттаче, может сможешь разобраться в чем дело.
Код: Выделить всё
'/// Содержимое frmMain
Private Sub btnSend_Click()
    Dim WebForm
    '/// Создаём новый класс формы
    Set WebForm = New WebFormClass
    '/// Указываем куда будем отправлять данные
    WebForm.Action = "http://www.zalil.ru/upload/"
    '/// Устанавливаем метод передачи POST
    WebForm.Method = "POST"
    '/// Для того чтобы передались файлы устанавливаем тип кодирования multipart/form-data
    WebForm.Enctype = "multipart/form-data"
    '/// Добавляем файл
    WebForm.AddFile "file", "C:\TestFile.txt"
    '/// Запускаем процедуру отправку
    Submit WebForm
    '// Создаём объект
    Set HTMLDocument = CreateObject("htmlfile")
    '// Инициируем создание BODY внутри документа
    HTMLDocument.Open
    HTMLDocument.Close
    '// Заполняем его данными
    HTMLDocument.body.innerhtml = XMLHTTP.responsetext
    '// Находим позицию искомого текста
    findPos = InStr(0, HTMLDocument.body.innerhtml, "http://slil.ru/")
    '// Выводим искомый текст
    lblIndex.Caption = Mid(HTMLDocument.body.innerhtml, findPos, 8)
End Sub

Sub Submit(WebForm)
    '/// Создаём объект отправки данных
    Dim XMLHTTP
    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")
    '/// Открываем соединение с URL
    XMLHTTP.Open WebForm.Method, WebForm.Action, False
    '/// Если тип передачи данных POST, то добавляем к пакету заголовки
    If WebForm.Method = "POST" Then
        '/// Если отправляем с кодированием "multipart/form-data", то добавляем информацию о разделителе данных
        If WebForm.Enctype = "multipart/form-data" Then
            XMLHTTP.setrequestheader "Content-type", WebForm.Enctype & "; boundary=" & WebForm.Boundary
        Else '/// В ином случае добавляем информацию о том, что данные отправляются формой
            XMLHTTP.setrequestheader "Content-type", WebForm.Enctype
        End If
    End If
   
    '/// Отправляем запрос
    XMLHTTP.Send WebForm.VarBody
    '/// Смотрим статус ответа
    Select Case XMLHTTP.Status
    '/// Если 200 - OK. Данные переданы успешно
    Case 200
        Dim InternetExplorer
        Set InternetExplorer = CreateObject("InternetExplorer.Application")
        InternetExplorer.Visible = True
        InternetExplorer.Navigate "about:blank"
        Do
                        WScript.Sleep 100
        Loop Until InternetExplorer.readystate = 4
        InternetExplorer.document.write XMLHTTP.responsetext
    Case Else
        MsgBox XMLHTTP.Status & " " & StatusText, vbCritical, "Ошибка при передаче данных !"
    End Select
End Sub

'/// Содержимое WebFormClass
Private Fields, Files
Private PropertyEnctype, PropertyMethod, PropertyBoundary, PropertyAction

Private Sub Class_Initialize()
    Fields = Array()
    Files = Array()
    PropertyEnctype = "application/x-www-form-urlencoded"
    PropertyMethod = "GET"
    PropertyBoundary = String(27, "-") & GenerateBoundary
    PropertyAction = "about:blank"
End Sub

Public Property Let Action(Value)
    PropertyAction = Value
End Property

Public Property Get Action()
    Action = PropertyAction
    If PropertyMethod = "GET" Then
        Dim Params
        Params = VarBody
        If VarBody <> "" Then Action = Action & "?" & Params
    End If
End Property

Public Property Get Boundary()
    Boundary = PropertyBoundary
End Property

Public Property Get Method()
    Method = PropertyMethod
End Property

Public Property Let Method(Value)
    Value = UCase(Value)
    If Value = "GET" Or Value = "POST" Then PropertyMethod = Value
End Property

Public Property Get Enctype()
    Enctype = PropertyEnctype
End Property

Public Property Let Enctype(Value)
    Value = LCase(Value)
    If Value = "multipart/form-data" Or Value = "application/x-www-form-urlencoded" Then PropertyEnctype = Value
End Property

Public Sub AddField(Name, Value)
    SetElement Fields, Name, Value
End Sub

Public Sub AddFile(Name, Value)
    SetElement Files, Name, Value
End Sub

Private Function SetElement(ArrayRef, Name, Value)
    For ElementID = 0 To UBound(ArrayRef)
        If ArrayRef(ElementID)(0) = Name Then
            ArrayRef(ElementID)(1) = Value
            Exit Function
        End If
    Next
    ReDim Preserve ArrayRef(UBound(ArrayRef) + 1)
    ArrayRef(UBound(ArrayRef)) = Array(Name, Value)
End Function
         
Public Property Get VarBody()
    If PropertyMethod = "POST" And PropertyEnctype = "multipart/form-data" Then
        Const DefaultBoundary = "--"
        Dim Stream
        Set Stream = CreateObject("ADODB.Stream")
        Stream.Type = 2
        Stream.Mode = 3
        Stream.Charset = "Windows-1251"
        Stream.Open
               
        Dim FieldHeader, FieldsBody
               
        For Each Field In Fields
            FieldHeader = "Content-Disposition: form-data; name=""" & Field(0) & """"
            FieldsBody = FieldsBody & DefaultBoundary & PropertyBoundary & vbCrLf & FieldHeader & vbCrLf & Field(1) & vbCrLf
        Next
               
        Stream.WriteText FieldsBody
               
        Dim FileHeader
               
        For Each File In Files
            If LoadFile(File(1), Data) Then
                FileHeader = DefaultBoundary & Boundary & vbCrLf & "Content-Disposition: form-data; name=""" & File(0) & """; filename=""" & File(1) & """" & vbCrLf & "Content-Type: octet/stream" & vbCrLf & vbCrLf
                Stream.WriteText FileHeader
                Stream.Position = 0
                Stream.Type = 1
                Stream.Position = Stream.Size
                Stream.write Data
                Stream.Position = 0
                Stream.Type = 2
                Stream.Position = Stream.Size
            End If
        Next
               
        Stream.Position = 0
        Stream.Type = 2
        Stream.Position = Stream.Size
        Stream.WriteText vbCrLf & DefaultBoundary & PropertyBoundary & DefaultBoundary
               
        Stream.Position = 0
        Stream.Type = 1
               
        VarBody = Stream.Read
    Else
        For Each Field In Fields
            VarBody = VarBody & Escape(Field(0)) & "=" & Escape(Field(1)) & "&"
        Next
        For Each File In Files
            VarBody = VarBody & Escape(File(0)) & "=" & Escape(File(1)) & "&"
        Next
        If Len(VarBody) > 0 Then VarBody = Left(VarBody, Len(VarBody) - 1)
    End If
End Property

Private Function LoadFile(Path, Data)
    On Error Resume Next
    Dim Stream
    Set Stream = CreateObject("ADODB.Stream")
    Stream.Type = 1
    Stream.Mode = 3
    Stream.Open
    Stream.LoadFromFile Path
    If Err.Number <> 0 Then Exit Function
    Data = Stream.Read
    LoadFile = True
End Function

Private Function GenerateBoundary()
    Dim Char
    Dim N
    For N = 1 To 12
        Randomize
        Char = Chr(CLng(Rnd * 25) + 97)
        If N Mod 2 Then Char = UCase(Char)
        GenerateBoundary = GenerateBoundary & Char
    Next
End Function
Вложения
TestSend.rar
Архив с проектом
(10.66 Кб) Скачиваний: 431
и начинали мы все чайниками, но потом...

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

Сообщение ALX_2002 » 08.07.2008 (Вт) 10:55

Всё банально просто. Этот код для VBS скриптов. А VBS функция Escape встроенная. В VB с ней сложнее - либо API / либо самописную делать. В общем перепахал - пробуй :) Но думаю тебе лучше всего это в HTA файле реализовать. Намного удобнее будет.
Вложения
TestSend.rar
(3.72 Кб) Скачиваний: 454

claymen
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 159
Зарегистрирован: 14.04.2006 (Пт) 16:07
Откуда: КЫРГЫЗСТАН г.Бишкек

Сообщение claymen » 08.07.2008 (Вт) 16:11

ALX_2002
Что-то VB ругается на то, что мол "не удается найти указанный ресурс" в строке кода:
Код: Выделить всё
XMLHTTP.Send WebForm.VarBody
и начинали мы все чайниками, но потом...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Эмуляция отправки WEB формы через XmlHttp в VBScript

Сообщение Antonariy » 13.04.2011 (Ср) 14:05

Данный кирпич при отправке текстовых файлов корёжит юникодный текст. Таблетка для VBA:

Код: Выделить всё
Public Property Get VarBody()
Dim FieldHeader As String, FieldsBody As String, Field
Dim FileHeader As String, File, Data
Dim b() As Byte
    If Method = "POST" And Enctype = "multipart/form-data" Then
        Const DefaultBoundary = "--"
        Dim Stream As Object
        Set Stream = CreateObject("ADODB.Stream")
        Stream.Type = 1
        Stream.Mode = 3
        Stream.Open
        For Each Field In Fields
            FieldHeader = "Content-Disposition: form-data; name=""" & Field(0) & """"
            FieldsBody = FieldsBody & DefaultBoundary & Boundary & vbCrLf & FieldHeader & vbCrLf & Field(1) & vbCrLf
        Next
        If Len(FieldsBody) > 0 Then Stream.WriteText FieldsBody
        For Each File In Files
            If LoadFile(File(1), Data) Then
                FileHeader = DefaultBoundary & Boundary & vbCrLf & "Content-Disposition: form-data; name=""" & File(0) & """; filename=""" & File(1) & """" & vbCrLf & "Content-Type: octet/stream" & vbCrLf & vbCrLf
                b = StrConv(FileHeader, vbFromUnicode)
                Stream.Write b
                Stream.Write Data
            End If
        Next
        b = StrConv(vbCrLf & DefaultBoundary & Boundary & DefaultBoundary, vbFromUnicode)
        Stream.Write b
        Stream.Position = 0
        VarBody = Stream.Read
    Else
        For Each Field In Fields
            VarBody = VarBody & Escape(Field(0)) & "=" & Escape(Field(1)) & "&"
        Next
        For Each File In Files
            VarBody = VarBody & Escape(File(0)) & "=" & Escape(File(1)) & "&"
        Next
        If Len(VarBody) > 0 Then VarBody = Left(VarBody, Len(VarBody) - 1)
    End If
End Property
Лучший способ понять что-то самому — объяснить это другому.

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

Re: Эмуляция отправки WEB формы через XmlHttp в VBScript

Сообщение ALX_2002 » 16.05.2011 (Пн) 12:10

2 Antonariy: Благодарю за исправления. )

Развитие компонента, продолжал уже тут ссылка.


Вернуться в Кирпичный завод

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

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

    TopList