excel vba - "Run-Time error '13': Type mismatch" in VBA for JSON extraction with JIRA API -
new community here. i've done decent amount of programming i'm new vba. never used before until , tasked extracting json data jira api excel spreadsheet. keep getting error "run-time error '13': type mismatch" , i'm not sure why. know error has passing in incorrect types i've tried changing json variable string no success. have ideas? thanks!
by way, trial jira instance testing api functionality.
sub test() 'authenticate user dim response string createobject("microsoft.xmlhttp") .open "post", "https://apitestsite.atlassian.net/rest/auth/1/session", false, "admin", "password" .setrequestheader "x-atlassian-token:", "nocheck" .send response = .responsetext end 'query through json set myrequest = createobject("winhttp.winhttprequest.5.1") myrequest.open "get", "https://apitestsite.atlassian.net/rest/api/2/issue/cc-1", false, "admin", "password" myrequest.send dim json object set json = jsonconverter.parsejson(myrequest.responsetext) msgbox json("fields")("summary") end sub update: @ right now. updated code authentication , no errors display compiler. here jsonconverter class using: github.com/vba-tools/vba-json/blob/master/jsonconverter.bas. issue returned json string says, "{"errormessages":["issue not exist or not have permission see it."],"errors":{}}". able connect jira fine , return json string, it's jira rejecting credentials :/
private jiraservice new msxml2.xmlhttp60 private jiraauth new msxml2.xmlhttp60 sub test() 'authenticate user jiraauth .open "post", "https://apitestsite.atlassian.net/rest/auth/1/session", false .setrequestheader "content-type", "application/json" .setrequestheader "accept", "application/json" .setrequestheader "x-atlassian-token:", "nocheck" .send " {""username"" : ""admin"", ""password"" : ""password""}""" serg = .responsetext scookie = "jsessionid=" & mid(serg, 42, 32) & "; path=/jira" '*** extract session-id end jiraservice set myrequest = createobject("winhttp.winhttprequest.5.1") myrequest.open "get", "https://apitestsite.atlassian.net/rest/api/2/issue/cc-1", false myrequest.setrequestheader "content-type", "application/json" myrequest.setrequestheader "accept", "application/json" myrequest.setrequestheader "set-cookie", scookie '*** see create "cookie" myrequest.send dim json string json = myrequest.responsetext msgbox json end end sub
this seems return valid json api, parseable jsonconverter module.
you using myrequest object possibly wrong type of object. elsewhere, you're relying on msxml2.xmlhttp60 class.
set myrequest = createobject("winhttp.winhttprequest.5.1") so removed myrequest , worked jiraservice object instead. had with jiraservice block weren't using object @ all, executing against winhttprequest object within block.
i declared variables, , modified auth string use const strings defined @ top of module user/password.
option explicit private jiraservice new msxml2.xmlhttp60 private jiraauth new msxml2.xmlhttp60 const user string = "jiratestemail82@gmail.com" const pw string = "password" sub test() dim serg$, scookie$, json$ 'authenticate user jiraauth .open "post", "https://apitestsite.atlassian.net/rest/auth/1/session", false .setrequestheader "content-type", "application/json" .setrequestheader "accept", "application/json" .setrequestheader "x-atlassian-token:", "nocheck" .send " {""username"" : """ & user & """, ""password"" : """ & pw & """}""" serg = .responsetext scookie = "jsessionid=" & mid(serg, 42, 32) & "; path=/jira" '*** extract session-id end jiraservice .open "get", "https://apitestsite.atlassian.net/rest/api/2/issue/cc-1", false .setrequestheader "content-type", "application/json" .setrequestheader "accept", "application/json" .setrequestheader "set-cookie", scookie '*** see create "cookie" .send json = .responsetext end dim j object set j = jsonconverter.parsejson(json) msgbox j("fields")("summary") end sub 
Comments
Post a Comment