Запуск URL из vb6???

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

Запуск URL из vb6???

Сообщение Albert » 04.12.2006 (Пн) 17:21

Как передать операционной системе команду:
http://192.168.1.1/archiv.zip (это просто пример)
так, чтобы это выполнилось но браузер не запускался???? (Ну или запускался но в невидимом режиме)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 04.12.2006 (Пн) 17:29

Приведённый в вопросе текст не содержит смысла.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 04.12.2006 (Пн) 17:32

Неудачный пример :)
Никакого выполнения не будет. Просто откроется окно с предложением скачать файл. Какую именно "команду" надо передать?

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 04.12.2006 (Пн) 17:36

ну мне просто необходимо выполнить действие, которое выполняется через веб интерфейс (URL для совершения этого действия известен)
Так вот как из моей проги на vb передать эту команду (URL)????

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.12.2006 (Пн) 17:38

есть Inet control , его и надо использовать, если хочешь скачать файл без открытия окна браузера. Или используй Winsock, примеры все на форуме

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 04.12.2006 (Пн) 17:40

2 Amed
Там строка для сохранение новых параметров на маршрутезаторе... (она содержит логин/пароль и что присваивается)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 04.12.2006 (Пн) 17:44

Собственно, вот. http://bbs.vbstreets.ru/viewtopic.php?t=28456

Надо только сформировать правильную строку. Что-то мне подсказывает, что строка уже есть.

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 04.12.2006 (Пн) 17:45

2 Konst_One
Я не просил новых решений... я просто спросил как исполнить мое решение. Просто я привел неудачный пример. С Уважением.

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 04.12.2006 (Пн) 17:48

2 Amed
Помоему это немного не тот примерчик

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.12.2006 (Пн) 17:56

для ленивых еще раз выложу ссылку:
http://vbnet.mvps.org/code/internet/urldownloadtofilenocache.htm

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 04.12.2006 (Пн) 17:59

блин... да мне ничего не надо скачивать, мне просто передать команду... и всё

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.12.2006 (Пн) 18:01

какую команду, напиши конкретней :!:

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 04.12.2006 (Пн) 18:01

Тот, тот :)

Зацени
Код: Выделить всё
Option Explicit

Private Sub Form_Load()
With Winsock1
    .Close
    .Connect "192.168.1.1", 80
End With
End Sub

Private Sub Winsock1_Connect()
    Winsock1.SendData "GET /index.html HTTP/1.1" & vbCrLf & _
    "user-agent: My MegaBrowser" & vbCrLf & _
    "cache-control: no-store no-cache" & vbCrLf & _
    "host: localhost" & vbCrLf & vbCrLf
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    Dim dt As String, frf As Integer
    Winsock1.GetData dt
    Text1.Text = Text1.Text + dt
End Sub


И веб-интерфейс как на ладони. Я проверял.
Последний раз редактировалось Amed 04.12.2006 (Пн) 19:59, всего редактировалось 1 раз.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.12.2006 (Пн) 18:04

Amed
спасибо, видимо автору нужно что-то подобное только методом POST

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 04.12.2006 (Пн) 18:05

Короче я делаю прогу мониторинга точки доступа wifi
мне нужно чтобы по нажатию на кнопочку (в моей проге) выполнялась команда. Вот например (команда перезагрузки точки доступа)
http://log:pas@192.168.1.1/rebo.htm
вот и всё... обратный ответ мне не нужен от точки доступа, нужно просто передать

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 04.12.2006 (Пн) 18:06

тебе уже ответили по данному вопросу, см. выше

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 06.12.2006 (Ср) 11:12

2 Amed:
Прошу прощения что долго сомневался (ибо по безграммотности моей), да действительно это то что надо... ответ от точки доступа приходит
Только вот проблема:
Как передать параметры со своим логином и паролем?? Строка записывается так:
admin:admin@192.168.3.1/cgi-bin/rset?rc=@system&rd=x&ZT=1165317156861
но IP указан в WinSokse, а перед ним еще надо поставить логин, пароль и собаку... Как сие сделать? (А то ответ то приходит от точки доступа, что типа соединение есть но вы не авторизованы)

И еще метод POST какое отличие имеет от GET???

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.12.2006 (Ср) 11:20

Albert, а не заглянуть ли тебе в местный FAQ на тему Отправка данных методами GET и POST, дабы не заслужить строгое замечание за вопрос из FAQ?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 06.12.2006 (Ср) 11:32

Ну ладно, прошу прощения, действительно по поводу гета и поста немного ступил...

Но по поводу передачи данных Логин:Пароль хотелось бы получить ответ.
С уважением!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 06.12.2006 (Ср) 12:09

Логин:Пароль шифруются в base64 и передаются в заголовке Authorization.
Изображение

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 06.12.2006 (Ср) 12:41

В "заголовке" это значит так?

Код: Выделить всё
Private Sub Form_Load()
With Winsock1
    .Close
    .Connect "192.168.0.1", 80
End With
End Sub

Private Sub Winsock1_Connect()
    Winsock1.SendData "GET /config.bin?rc=@system&ZT=1165317156861 HTTP/1.1" & vbCrLf & _
    "Authorization: admin:admin" & vbCrLf & _    '!!!!!!!!!!!!!!!!!!
    "user-agent: Internet Explorer" & vbCrLf & _
    "cache-control: no-store no-cache" & vbCrLf & _
    "host: localhost" & vbCrLf & vbCrLf
End Sub


2. А как чтобы проверить зашифроать то в base64 ???

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 06.12.2006 (Ср) 12:45

А Base64 ты мимо ушей пропустил?
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.12.2006 (Ср) 12:49

Работа с закрытыми интернет ресурсами.

Данная статья описывает работу с закрытыми интернет ресурсами с использованием доступа Basic Authentication. Также вы сможете здесь найти как можно работать с прокси-сервером, который требует авторизации у клиента. Я надеюсь, что вы уже освоили приемы по работе с контролом Winsock и знаете что такое HTTP Request и Response, а также разбираетесь в заголовках HTTP header.

Вы сможете найти более подробное описание о Web Authentication в RFC2617 (http://www.faqs.org/rfcs/rfc2617.html).

Данный документ представляет вам детальный пример для понимания разницы между двумя схемами аутентификации: Basic и Digital.

Как я могу узнать когда мне надо посылать имя и пароль для авторизации?

Когда HTTP-сервер получает запрос на доступ к ресурсу, который требует от клиента авторизации, он отвечает сообщением со специальным кодом 401 и посылает в заголовке поле "WWW-Authenticate", которое содержит информацию для клиента о методе используемой аутентификации. Ниже приведен пример ответа сервера:

HTTP/1.0 401 Access Denied
Server: Statistics Server 5.0
WWW-Authenticate: Basic realm="StatisticsServer"
Content-Type: text/html
Connection: Keep-Alive
Content-Length: 118


Как послать информацию об авторизации?

Получив ответ от сервера, показанный выше, клиент должен отправить запрос заново. Новый запрос должен содержать авторизационный заголовок, содержащий имя и пароль. Пример:

GET /secured_document.htm HTTP/1.1
Host: www.somehost.com
Connection: close
Accept: */*
Authorization: Basic PoDfXdER2s5cVt==


Что значит данная строка (PoDfXdER2s5cVt==) в поле Authorization заголовка? Это наши имя и пароль, разделенные двоеточием и зашифрованные по алгоритму Base64:

Authorization: = Base64Encode(username:password)

Как зашифровать строку в Base64?

Ниже приведена функция, которая реализует данный алгоритм.

Код: Выделить всё
Private Function Base64_Encode(strSource) As String
'
Const BASE64_TABLE As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
'
Dim strTempLine As String
Dim j As Integer
'
For j = 1 To (Len(strSource) - Len(strSource) Mod 3) Step 3
   '
   strTempLine = strTempLine + Mid(BASE64_TABLE, _
                 (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
   '
   strTempLine = strTempLine + Mid(BASE64_TABLE, _
                 ((Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
                 + Asc(Mid(strSource, j + 1, 1)) \ 16) + 1, 1)
   '
   strTempLine = strTempLine + Mid(BASE64_TABLE, _
                 ((Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 _
                 + Asc(Mid(strSource, j + 2, 1)) \ 64) + 1, 1)
   '
   strTempLine = strTempLine + Mid(BASE64_TABLE, _
                 (Asc(Mid(strSource, j + 2, 1)) Mod 64) + 1, 1)
   '
Next j
'
If Not (Len(strSource) Mod 3) = 0 Then
   '
      If (Len(strSource) Mod 3) = 2 Then
         '
         strTempLine = strTempLine + Mid(BASE64_TABLE, _
                       (Asc(Mid(strSource, j, 1)) \ 4) + 1, 1)
         '
         strTempLine = strTempLine + Mid(BASE64_TABLE, _
                       (Asc(Mid(strSource, j, 1)) Mod 4) * 16 _
                        + Asc(Mid(strSource, j + 1, 1)) \ 16 + 1, 1)
         '
         strTempLine = strTempLine + Mid(BASE64_TABLE, _
                       (Asc(Mid(strSource, j + 1, 1)) Mod 16) * 4 + 1, 1)
         '
         strTempLine = strTempLine & "="
         '
      ElseIf (Len(strSource) Mod 3) = 1 Then
         '
         strTempLine = strTempLine + Mid(BASE64_TABLE, _
                       Asc(Mid(strSource, j, 1)) \ 4 + 1, 1)
         '
         strTempLine = strTempLine + Mid(BASE64_TABLE, _
                       (Asc(Mid(strSource, j, 1)) Mod 4) * 16 + 1, 1)
         '
         strTempLine = strTempLine & "=="
         '
      End If
      '
   End If
   '
Base64_Encode = strTempLine
'
End Function



Прокси авторизация.

Данный вариант аутентификации мы рассмотрим позднее. :D

Оригинал: http://www.vbip.com/winsock/winsock_http_04_01.asp
Перевод - вольный :lol:
Вложения
Authorization.rar
(5.38 Кб) Скачиваний: 113

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 06.12.2006 (Ср) 13:10

Крута... респект всем... работает... глазам поверить не могу...

Ответ сервера:
HTTP/1.0 200 OK
Connection: close

)))))) Ура
Спасибо всем огромное :D :D :D

Albert
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 09.02.2006 (Чт) 22:39
Откуда: Москва

Сообщение Albert » 06.12.2006 (Ср) 15:59

А что кстати обозначает параметр:
Accept: */*

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 06.12.2006 (Ср) 16:06

любой тип ответа сервера.
варианты: text/html, text/xml и тд и тп


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

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

Сейчас этот форум просматривают: Google-бот и гости: 54

    TopList