Excel VBA post请求错误-多部分/表单数据

Excel VBA post请求错误-多部分/表单数据,excel,vba,http,xmlhttprequest,Excel,Vba,Http,Xmlhttprequest,我试图在一个网站上发布请求,以便上传Excel文件。 当我手动操作(手动浏览文件输入html元素中的文件)并捕获网络流量时,fiddler上会显示以下消息: Host: electool.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0 Accept: */* Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=

我试图在一个网站上发布请求,以便上传Excel文件。 当我手动操作(手动浏览文件输入html元素中的文件)并捕获网络流量时,fiddler上会显示以下消息:

Host: electool.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: */*
Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate, br
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=---------------------------8432274816859
Content-Length: 35577
DNT: 1
Connection: keep-alive
Referer: https://electool.com/sourcingtool/pageflowViews/tender_view/action.html?pageflow=tender_view:-2
Cookie: JSESSIONID=87C7F4550EFBDF7A8D6F94C2D021CBB5; electool_sso=5A7A319313EA0EF4

-----------------------------8432274816859
Content-Disposition: form-data; name="qId"

1
-----------------------------8432274816859
Content-Disposition: form-data; name="attachment_1"; filename="A_aFRR negatív_QWERTY00_W38.xlsx"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
..."
我也希望使用excel vba执行同样的操作(选择文件并发布相同的消息以上载excel文件)

我现在拥有的代码是:

    For i = 1 To ie.Manage.Cookies.Count
     myCookie = myCookie & ie.Manage.Cookies.Item(i).Name & "=" & ie.Manage.Cookies.Item(i).Value & "; "
    Next
    myCookie = Left(myCookie, Len(myCookie) - 2)
    Dim strBoundary As String
    strBoundary = "-----------------------------501911906621"

    myURL2 = "https://electool.com/sourcingtool/participant/ajaxSaveAttachment.htm"
    sPayLoad = strBoundary & vbNewLine & _
      "Content-Disposition: form-data; name=""qId""" & vbNewLine & vbNewLine & _
      "1" & vbNewLine & strBoundary & vbNewLine & _
      "Content-Disposition: form-data; name=""attachment_1"";filename=""E_W_37_negativ.xlsx""" & _
      vbNewLine & "Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" & _
      vbNewLine & vbNewLine

    sPayLoad = sPayLoad & GetFile(myFile) & strBoundary

    With CreateObject("Msxml2.ServerXMLHTTP.6.0")
        .Open "POST", myURL2, False
        .setRequestHeader "Content-Type", "multipart/form-data; boundary=" & strBoundary
        .setRequestHeader "Content-Length", LenB(sPayLoad)
        .setRequestHeader "Host", "electool.com"
        .setRequestHeader "Cookie", myCookie
        .setRequestHeader "Referer", ie.url
        .send (sPayLoad)
        Debug.Print .responseText
    End With
End Sub

Function GetFile(ByVal FileName As String) As String
    Dim FileContents() As Byte, FileNumber As Integer
    ReDim FileContents(FileLen(FileName) - 1)
    FileNumber = FreeFile()
    Open FileName For Binary As FileNumber
    Get FileNumber, , FileContents
    Close (FileNumber)
    GetFile = StrConv(FileContents, vbUnicode)
End Function
我得到的响应是:
ng失败;嵌套异常为com.electool.sourcing.framework.util.request.exception.RequestParameterNotPresentException:在请求中找不到参数:[qId]

我也尝试了我在这个链接上找到的东西,但仍然不起作用(或者我没有在VBA中很好地实现它)

我使用了下面链接中的概念,成功地实现了这一点(也存在边界问题)。