Я использую макрос в Outlook VBA для отправки файла через POST на URL:
Set http = New WinHttp.WinHttpRequest
http.Open "POST", UrlToPostTo, False 'True '
http.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
http.setRequestHeader "Content-Type", "multipart/form-data; "
http.Send data
Моя проблема в том, что страница, которая примет запрос (в данном случае это страница загрузки файла), защищена аутентификацией - при первоначальном запросе, указанном выше, будет возвращена страница входа вместо самой страницы.
Я попытался определить, появляется ли страница входа в систему, и если да, опубликовать имя пользователя и пароль в качестве переменных формы (я надеюсь, что это эквивалентно тому, как человек вводит имя пользователя и пароль на страницу в веб-браузере).
Итак, шаги:
* запросить URL (включите файл с постом).
* Проверьте, является ли ответ ответной страницей.
* Если так, то в том же сеансе http отправьте имя пользователя и пароль на URL.
* Если сервер теперь обрабатывает исходное сообщение, хорошо, в противном случае я могу опубликовать его снова.
Код выглядит так:
' if the login page comes back, send credentials '
If (InStr(http.ResponseText, "j_password") > 0) Then
Dim loginData As String
loginData = "j_username=theusername&j_password=thepassword"
http.Open "POST", UrlToPostTo, False
http.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
http.setRequestHeader "Content-Type", "multipart/form-data; "
http.Send loginData
End If
Но когда я делаю это, http.Responsetext все еще остается страницей входа (или снова?).
Есть идеи, что я делаю не так? Мой план даже действителен?
(Это связано с попыткой решить эту проблему )