Очистка таблицы с использованием xml и VBA, которая сначала требует информацию для входа - PullRequest
0 голосов
/ 15 декабря 2018

java-скрипт для входа на страницу Я пытаюсь очистить таблицу от веб-страницы из моей работы с xml для повышения скорости.Я разместил ссылку, но, к сожалению, вы не сможете войти в систему, так как она находится за брандмауэром.

Мне удалось получить таблицу с обычным, то есть соскребанием, но как только я услышал о xml, я понял, что этобыл путь.

Однако, когда я пытаюсь отправить учетные данные и проверять ответ, я продолжаю видеть ответ, который мне нужен для отправки учетных данных.

Sub test() 

    link = "http://w2tsl72/FAB-2_PROD/DmrListResults.asp?area=FAB&location=EPI&status=OP&Lot=ALL&waitTitle=ENG&waitBadge=18352&OpenFrom=ALL&OpenTo=ALL&CloseFrom=ALL&CloseTo=ALL&defect_cat=ALL&defect_group1=ALL&defect_group2=ALL&EightD=ALL&MRB=ALL&dmrType=ALL&EQUIP=ALL&NCMR=ALL&SOLAN=ALL&prod="

    With CreateObject("MSXML2.XMLHttp")

        .Open "get", link, False, "xxxx", "xxxxx"

        .send

        htmlDoc.body.innerHTML = .responseText

        Debug.Print .responseText

    End With

End Sub

Вторая попытка:

Sub test23()

link = "http://w2tsl72/FAB-2_PROD/Login.asp"

With CreateObject("MSXML2.XMLHttp")    

    .Open "get", link, False

    .send

    htmlDoc.body.innerHTML = .responseText

    htmlDoc.getElementById("text1").Value = "xxxx"
    htmlDoc.getElementById("password1").Value = "xxxxx"
    htmlDoc.getElementById("submit1").Click




link = "http://w2tsl72/FAB-2_PROD/DmrListResults.asp?area=FAB&location=EPI&status=OP&Lot=ALL&waitTitle=ENG&waitBadge=18352&OpenFrom=ALL&OpenTo=ALL&CloseFrom=ALL&CloseTo=ALL&defect_cat=ALL&defect_group1=ALL&defect_group2=ALL&EightD=ALL&MRB=ALL&dmrType=ALL&EQUIP=ALL&NCMR=ALL&SOLAN=ALL&prod="`
End With

End Sub

Я предполагаю, что я вошел в систему, и теперь я хочу перейти по ссылке выше с xml.

После внесения исправлений, предложенных Уэйном, вы это имеете в виду?

Sub test23()

link = "http://w2tsl72/FAB-2_PROD/Login.asp"


Dim response As String
UserName = "xxxx"
Password = "xxxx"
With XMLPage
    .Open "post", link, False
    .setRequestHeader "Cookie", "ASPSESSIONIDQSRASDCT=EPKEOALBCAIKKCHNEGBKJJJG"
    .setRequestHeader "Authorization", "Basic " + Base64Encode(UserName + ":" + Password)
    .send
    htmlDoc.body.innerHTML = .responseText
End With

    link = "http://w2tsl72/FAB-2_PROD/DmrListResults.asp?area=FAB&location=EPI&status=OP&Lot=ALL&waitTitle=ALL&waitBadge=18352&OpenFrom=ALL&OpenTo=ALL&CloseFrom=ALL&CloseTo=ALL&defect_cat=ALL&defect_group1=ALL&defect_group2=ALL&EightD=ALL&MRB=ALL&dmrType=ALL&EQUIP=ALL&NCMR=ALL&SOLAN=ALL&prod="

With XMLPage

  .Open "GET", link, False
  .setRequestHeader "Cookie", "ASPSESSIONIDQSRASDCT=EPKEOALBCAIKKCHNEGBKJJJG"
  .send
   htmlDoc.body.innerHTML = .responseText
End With

End Sub

попытка нового кода

Sub post_frm()

    Dim objIE As Object, xmlhttp As Object
    Dim response As String

    Set objIE = CreateObject("InternetExplorer.Application")
    objIE.Navigate "about:blank"
    objIE.Visible = True

    Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")

    '~~> Indicates that page that will receive the request and the type of request being submitted
    xmlhttp.Open "post", "http://w2tsl72/FAB-2_PROD/Login.asp", False
    '~~> Indicate that the body of the request contains form data
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"

    '~~> Send the data as name/value pairs
    xmlhttp.send "text1=xxxx&password1=xxxx"


    response = xmlhttp.responseText
    objIE.Document.write response

    Set xmlhttp = Nothing

End Sub
...