亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang“登錄網站并下載xls文件”?

Golang“登錄網站并下載xls文件”?

Go
叮當貓咪 2023-06-19 11:09:16
告訴我如何使用 Golang 登錄站點。下載xls文件是得到了,但是為了在Excel表格中有數據,需要登錄網站。該站點位于公司的服務器上。如果你能告訴你怎么做。例如,我用來執行此操作的 VBA 代碼。Set oFields = CreateObject("Scripting.Dictionary")With oFields    .Add "login", "sdiscor"    .Add "password", "sdiscor"End WithFor Each sName In oFields    oFields(sName) = sName & "=" & EncodeUriComponent(oFields(sName))NextsPayLoad = Join(oFields.Items(), "&")With CreateObject("MSXML2.XMLHTTP")    .Open "POST", "http://effect.gvc.oao.rzd/cgi_bin/effect_access.pl?", False    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"    .setRequestHeader "Content-Length", LenB(sPayLoad)    .Send (sPayLoad)    Do While .readyState <> 4        DoEvents    Loop    webLink = "http://effect.gvc.oao.rzd/effect/table/***&LOGIN=&PASSWORD="    vLocalFile = ThisWorkbook.Path & "\SIS-Effect.xls"    .Open "GET", webLink, True    .Send    Do While .readyState <> 4        DoEvents    Loop    oResp = .responseBody    vFF = FreeFile    If Dir(vLocalFile) <> "" Then Kill vLocalFile    Open vLocalFile For Binary As #vFF    Put #vFF, , oResp    Close #vFFEnd With感謝萊奧拉!?。∽罱K代碼func main() {urlLogin := "http://effect.gvc.oao.rzd/cgi_bin/effect_access.pl?"urlDownload := "http://effect.gvc.oao.rzd/effect/table/OZODO10U.XLS?DAT=2019.03.04&LOGIN=&PASSWORD="cookieJar, _ := cookiejar.New(nil)client := &http.Client{Jar: cookieJar,}_, err := client.PostForm(urlLogin,    url.Values{"login": {"sdiscor"}, "password": {"sdiscor"}})if err != nil {    fmt.Println("Error while downloading", urlLogin, "-", err)    return}fileName := "1.xls"fmt.Println("Downloading", urlDownload, "to", fileName)output, err := os.Create(fileName)if err != nil {    fmt.Println("Error while creating", fileName, "-", err)    return}defer output.Close()resp, err := client.Get(urlDownload)if err != nil {    fmt.Println("Error while downloading", urlDownload, "-", err)    return}
查看完整描述

1 回答

?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

我不知道 VBA,但在我看來你正在使用憑據執行 HTTP POST,然后你正在執行 HTTP GET 以獲取你正在尋找的文件。我想您正在使用的類會在請求之間保存 cookie,這就是身份驗證的工作方式。

假設,在 Go 中,您將使用庫https://golang.org/pkg/net/http/cookiejar/來保存 cookie,并使用https://golang.org/pkg/net/http/來執行實際請求.

你每次都經過同一個餅干罐。

沿著這些線的東西(不準確或檢查):

package main


import (

    "net/http"

    "net/http/cookiejar"

)


func main() {

    cookieJar, _ := cookiejar.New(nil)


    client := &http.Client{

        Jar: cookieJar,

    }


    resp, err := http.PostForm("http://example.com/loginform",

        url.Values{"login": {"sdiscor"}, "password": {"sdiscor"}})

    resp, err := client.Get("http://example.com/")

}


查看完整回答
反對 回復 2023-06-19
  • 1 回答
  • 0 關注
  • 140 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號