Проблемы с автоматической загрузкой с безопасного сайта - PullRequest
0 голосов
/ 15 декабря 2018

Мне нужна помощь в загрузке файлов с защищенного веб-сайта.У меня нет особых знаний в этой области, поэтому я не уверен, что я могу предоставить, что будет полезно.Если вы можете сказать мне, что взять с веб-сайта, я буду.

Вот основы.Я должен использовать IE.Я использую VBA для отправки автоматизированного кода.Я могу войти на сайт, перейти на страницу их отчетов, запустить свой отчет.Он возвращает таблицу с гиперссылкой, именем и т. Д. Я только на этапе попытки загрузить только один пример, поэтому я знаю, что загрузка работает.Я думаю, что смогу зациклить таблицу и кормить гиперссылки на цикл без проблем.

Когда я загрузил код загрузки своей первой гиперссылкой, я получил свой PDF, но после его открытия это всего лишь сообщение о том, что вы должны войти в систему для просмотра.Ну, я вошел в систему. Он использовал

Call URLDownloadToFile(0, "https://atlasbridge.com/reports/atlasreportdownload.ashx?N=49837661&RT=PREVMAIL", "C:\Users\JCarney\Desktop\DownloadedMail\atlasreportdownload.ashx.pdf", 0, 0)

, затем я попытался:

 Dim theURL As String
 theURL = "https://atlasbridge.com/reports/atlasreportdownload.ashx?  N=49837661&RT=PREVMAIL"          
Debug.Print theURL
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", theURL, False, UName, Pword
WinHttpReq.Send
theURL = WinHttpReq.responseBody
If WinHttpReq.Status = 200 Then
Debug.Print theURL
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody oStream.SaveToFile "C:\Users\JCarney\Desktop\DownloadedMail\atlasreportdownload.ashx.pdf", 2 ' 1 = no overwrite, 2 = overwrite
oStream.Close
End If

Результат тот же, PDF-файл загружается, но говорит, что я не вошел в систему. UName,Pword - это строковые переменные, которые ищут имя пользователя и пароль ранее в подпрограмме.Они ищут правильную информацию.Я в растерянности относительно того, куда идти отсюда.Могу ли я сделать так, чтобы vba "щелкала" по гиперссылке, скачивала и называла файл?или я продолжаю пытаться скачать с WinHttpReq.

вот как выглядит HTML таблицы:

 '<table align="center" id="ctl00_cphMain_dgMailings" style="border-collapse:collapse;" border="1" rules="all" cellspacing="0">
'<td>Policy</td><td>Insured</td><td>Type</td><td>Mailed</td>
'    <tbody><tr class="blacktextbold">
'        <td>&nbsp;</td><td>Policy</td><td>Insured</td><td>Type</td><td>Mailed</td>
'    </tr><tr class="blacktext">

'    </tr><tr class="blacktext" style="background-color:#D9D9D9;">
'        <td><a href="../reports/atlasreportdownload.ashx?N=49837661&amp;RT=PREVMAIL" target="_blank">View</a></td><td>1501-1603-1276</td><td>SUSAN</td><td>Amended Dec Page</td><td>12/08/2018</td>
'    </tr><tr class="blacktext">href="javascript:__doPostBack('ctl00$cphMain$dgMailings$ctl19$ctl01','')">&gt;</a></td>
'    </tr>
'</tbody></table>

Какой будет правильно отформатированная гиперссылка, как если бы вы делали это вручную: "https://atlasbridge.com/reports/atlasreportdownload.ashx?N=49837661&RT=PREVMAIL"таблица показывает нам усеченный путь.

Заранее спасибо.

быстрое редактирование. Когда я проверяю элемент, гиперссылка "view" в таблице. Я получаю:

<a href="../reports/atlasreportdownload.ashx?N=49988945&amp;RT=PREVMAIL" target="_blank">View</a>

Если это полезно. Не проливает свет на меня, но, возможно, это полезно. Это текст ответа, если я использую SetCredentials "username", "password" ,, HTTPREQUEST_SETCREDENTIALS_FOR_SERVER для экрана входа в систему веб-сайта веб-страница экрана входа в систему

вот текст ответа, когда я непосредственно нажал на гиперссылку pdf: гиперссылка pdf

1 Ответ

0 голосов
/ 18 декабря 2018

Из вашего последнего поста я вижу, что ваши ручные шаги работают.

Но, В вашем коде вы используете WinHttpReq.Open и другой код.Что не будет работать точно так же, как вы делали вручную.

Я предлагаю вам создать объект Internet Explorer, а затем попытаться использовать его для открытия вашей веб-страницы.чем вы можете попытаться найти ссылки на PDF-файл, используя его идентификатор, и нажать кнопки или ссылки, чтобы загрузить его.

Пример кода:

Sub demo()
            
        Dim IEapp As Object
        Dim WebUrl As String
        
        Set IEapp = CreateObject("InternetExplorer.Application") 
        WebUrl = "http://www.microsoft.com"
                                                                                       
        With IEapp
            .Silent = True
            .Visible = True
            .Navigate WebUrl


            Do While .Busy
                DoEvents
            Loop
            
            Do While .readyState <> 4
                DoEvents
            Loop
        
        End With
               
    End Sub

Добавьте ссылку на Microsoft Internet Controls и Библиотека объектов Microsoft HTML для запуска этого кода.

Thisэто просто пример кода, вам нужно изменить его и добавить больше кода для удовлетворения ваших требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...