1

動的に生成されたファイルをサーバーにダウンロードするように自動化しようとしているので、手動で実行する必要がある手順は次のとおりです-

  1. 資格情報を使用してサイトにログインします - NTLM を使用して認証します。
  2. ログイン後、ポストメソッドを使用して詳細をフォームに入力し、サーバーにファイルを生成してサーバーに応答を返します。

最初に、VBScript を使用してそれを行うことを考えました。

  • IE オートメーション オブジェクトを取得する

  • ユーザーワード/パスワードを送信する sendkeys

  • ページに移動してファイルをダウンロードします

  • Sendkeys to switch to save button - しかし、IE が私が決定できない保存場所を私に要求するので、ここで私は動けなくなりました。また、私はそれを開くことを考えましたが、Excelファイルのオートメーションオブジェクトをこの方法で開くことができません:(

結果のExcelwgetファイルを提供するためのデータと基礎を投稿する必要があるため、機能しません。

したがって、Web で検索した後、MSXML2.xmlhttpオブジェクトまたは Java ソケットを使用してそれを実行し、get メソッドを使用してページをダウンロードできることがわかりましたが、ページを開くには資格情報を提供する必要があります。

誰でも、ユーザーを認証してファイルをダウンロードする方法を教えてください。

編集:コード

--ページをダウンロード

objmsXML.Open "GET", url, False
objmsXML.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objmsXML.setRequestHeader "Referer", url
objmsXML.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36"
objmsXML.send

-- 詳細を入力してデータを投稿

If objmsXML.Status = 200 Then
  'First Response received.
  'get all the response headers
  responseHeaders = objmsXML.getAllResponseHeaders()
  responseBody = objmsXML.responseText    
End If

Dim viewState As String
Dim eventTarget, eventArgument, txtProjectID, btnSubmit, grdReportPostDataValue
Dim eventValidation As String

viewState = Split(Split(responseBody, "__VIEWSTATE")(2), """")(2)
viewState = URLEncode(viewState, False)

eventTarget = ""
eventArgument = ""
txtProjectID = projectID
btnSubmit = URLEncode("Submit")
grdReportPostDataValue = ""
eventValidation = Split(Split(responseBody, "__EVENTVALIDATION")(2), """")(2)
eventValidation = URLEncode(eventValidation, False)

objmsXML.Open "POST", url, False

Dim postData
postData = "__EVENTTARGET=" & eventTarget & "&__EVENTARGUMENT=" _
  & eventArgument & "&__VIEWSTATE=" & viewState & "&txtProjectID=" _
  & txtProjectID & "&btnSubmit=" & btnSubmit & "&grdReportPostDataValue" _
  & grdReportPostDataValue & "&__EVENTVALIDATION=" & eventValidation

objmsXML.send postData

しかし問題は、フォーム投稿の結果として 2 ページ目が表示されないことです。これは、セッション Cookie を追跡できないことが原因であると考えられます。助けてください。

4

1 に答える 1