drxd54816 2019-07-15 13:57
浏览 37
已采纳

我不能通过Golang发送发帖请求吗?

VBA code works well

Set oFields = CreateObject("Scripting.Dictionary")
With oFields
    .Add "dor_user", "51"
    .Add "login", "nvivc"
    .Add "pass", "51256"
End With
For Each sName In oFields
    oFields(sName) = sName & "=" & EncodeUriComponent(oFields(sName))
Next
sPayLoad = Join(oFields.Items(), "&")
With CreateObject("MSXML2.XMLHTTP")
    .Open "POST", "http://kasant.gvc.oao.rzd:8888/kasant/login?", False
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .setRequestHeader "Content-Length", LenB(sPayLoad)
    .Send (sPayLoad)
    Do While .readyState <> 4
        DoEvents
    Loop
End With

Login successful FIDDLER

POST http://kasant.gvc.oao.rzd:8888/kasant/login? HTTP/1.1

Accept: /

Content-Type: application/x-www-form-urlencoded

Accept-Language: ru,en-US;q=0.7,en;q=0.3

UA-CPU: AMD64

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; Win64; x64; Trident/7.0; .NET4.0C; .NET4.0E)

Host: kasant.gvc.oao.rzd:8888

Content-Length: 34

Connection: Keep-Alive

Pragma: no-cache

Cookie: dor_user=""; kasant_pass=""; kasant_user=""; kasant_pass_save=false; JSESSIONID=0000VSeSKuzaru0vpwzeeSQF29Y:1ak0n0hlm

dor_user=51&login=nvivc&pass=51256

JSESSIONID=0000VSeSKuzaru0vpwzeeSQF29Y:1ak0n0hlm

Code Golang

urlLogin := "http://kasant.gvc.oao.rzd:8888/kasant/login?"
formData := url.Values{
    "dor_user": {"51"},
    "login":    {"nvivc"},
    "pass":     {"51256"},
}
client := &http.Client{}
req, _ := http.NewRequest("POST", urlLogin, bytes.NewBufferString(formData.Encode()))
req.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, _ := client.Do(req)
defer resp.Body.Close()

FIDDLER

POST http://kasant.gvc.oao.rzd:8888/kasant/login? HTTP/1.1 Host:

kasant.gvc.oao.rzd:8888 User-Agent: Mozilla/4.0 (compatible; MSIE 7.0;

Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)

Content-Length: 34 Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip

dor_user=51&login=nvivc&pass=51256

Missing cookies and JSESSIONID. Login failed!!! Tell me what is the error???

  • 写回答

1条回答 默认 最新

  • dsa99349 2019-07-17 07:59
    关注

    Thanks @Peter

    urlLogin := "http://kasant.gvc.oao.rzd:8888/kasant/login?"
    formData := url.Values{
        "dor_user": {"51"},
        "login":    {"nvivc"},
        "pass":     {"51256"},
    }
    cookieJar, _ := cookiejar.New(nil)
    client := &http.Client{
        Jar: cookieJar,
    }
    respp, _ := client.Post(urlLogin, "application/x-www-form-urlencoded", bytes.NewBufferString(formData.Encode()))
    defer respp.Body.Close()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器