Rest API Un Authorized response

CHANDRASEKAR S B
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
July 7, 2020

Hi,

I modified the below code and  tried to upload the file VIA Rest API using VBA unfortunately am getting 401 error

Please advise to fix the error. 

 

Private Sub Test()
Dim oJiraService As MSXML2.ServerXMLHTTP60
Const STR_BOUNDARY As String = "abc123-xyz123"
Dim sUrl As String, sRest As String, sIssueNumber As String
Dim sFileDataStr As String, sPath As String, sStatus As String

Set oJiraService = New MSXML2.ServerXMLHTTP60
sUrl = "MyUrl"
sIssueNumber = 963242
apikey = "dbd636f097a378a1d93c13b"

sPath = "myfloder\_1.pdf_2.pdf"

sFileDataStr = "--" & STR_BOUNDARY & vbCrLf & _
"Content-Disposition: form-data; name=""api_key" & apikey & vbCrLf & _
STR_BOUNDARY & "--" & vbCrLf & _
"--" & STR_BOUNDARY & vbCrLf & _
"Content-Disposition: form-data; name=""workflow_id" & sIssueNumber & vbCrLf & _
STR_BOUNDARY & "--" & vbCrLf & _
"--" & STR_BOUNDARY & vbCrLf & _
"Content-Disposition: form-data; name=""userfile"";Filename = """ & Mid$(sPath, InStrRev(sPath, "\") + 1) & """" & vbCrLf & _
"Content-Type: application/octet-stream" & vbCrLf & _
vbCrLf & GetFileBytes(sPath) & vbCrLf & "--" & _
STR_BOUNDARY & "--"


With oJiraService
.Open "POST", sUrl, False
.setRequestHeader "Content-Type", "multipart/form-data; boundary=" & STR_BOUNDARY
.send stringToByteArray(sFileDataStr)
'.send sData
sRest = .responseText
sStatus = .Status & " | " & .statusText
End With


Set oJiraService = Nothing
End Sub


Public Function EncodeBase64(text As String) As String
Dim arrData() As Byte
arrData = StrConv(text, vbFromUnicode)
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
EncodeBase64 = objNode.text

Set objNode = Nothing
Set objXML = Nothing
End Function

Public Function GetFileBytes(ByVal fPath As String) As String
Fnum = FreeFile
Dim bytRtnVal() As Byte
If LenB(Dir(fPath)) Then ''// Does file exist?
Open fPath For Binary Access Read As Fnum
ReDim bytRtnVal(LOF(Fnum) - 1&) As Byte
Get Fnum, , bytRtnVal
Close Fnum
Else
Err.Raise 53
End If
GetFileBytes = byteArrayToString(bytRtnVal)
Erase bytRtnVal
End Function

Public Function byteArrayToString(bytArray() As Byte) As String
Dim sAns As String
sAns = StrConv(bytArray, vbUnicode)
byteArrayToString = sAns
End Function

Public Function stringToByteArray(srcTxt As String) As Byte()
stringToByteArray = StrConv(srcTxt, vbFromUnicode)
End Function

 

 

0 answers

Suggest an answer

Log in or Sign up to answer