vbscript: error on login
I need to try to access RTC through vb script and I also found a site that provides a script: http://www.ibm.com/developerworks/rational/library/rational-team-concert-visual-basic/
But I cannot get it to work. I'm stuck at the login which doesn't seem to work even though I've tried to apply all the corrections that were suggested in the comments.
I'd post right there on the site with the article but it doesn't work (I'm getting an error message to try later...) so I'm hoping someone here can help.
This is my JazzLogin function:
Public Function JazzLogin(url, userid, password)
Dim JazzUserid
Dim JazzPassword
JazzUserid = "j_username=" & userid
JazzPassword = "j_password=" & password
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
' login to jazz server specified in the parameter section.
http.Open "GET", url&"/authenticated/identity", False
http.Send
http.Open "POST", url&"/authenticated/j_security_check", False
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.Send JazzUserid&"&"&JazzPassword
Set JazzLogin = http
End Function
Hope you can help me!
Additional info: the url itself works when I use it to access RTC via perl. So I don't have an error somewhere in the url or user credentials
2 answers
http://stackoverflow.com/questions/35906564/login-into-website-using-msxml2-xmlhttp-instead-of-internetexplorer-application
So using XMLHTTP instead of ServerXMLHTTP should resolve the issue. If you are like me and have to use ServerXMLHTTP in order to ignore SSL certificate errors, then you probably have to go through the painful process of parsing the cookies by yourself.
Comments
I was having the same issue above (a POST or GET on the authentication URL from VBA was dying from 400 errors, even though the exact same code works from Perl/cuRL.)
The solution (at least for me) was that you have to set the User-Agent from your response header in VBA like so:
Set http = CreateObject("Msxml2.ServerXMLHTTP.6.0")
....
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
http.setRequestHeader "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
http.setRequestHeader "User-Agent", "MS Internet Explorer"
Whatever user-agent value is being sent from VBA's COM interface class is considered invalid by RTC, no idea why and RTC offers not useful hint in the return headers (or it could be I'm not understanding them.)
Making this change allows me to successfully POST a login, get my JSESSIONID, and continue making calls on this object just fine.
By the way, the other COM interface works as well: Set http = CreateObject("MSXML2.XMLHTTP")
For simplicity, especially if you're making a light amount of REST calls, this is probably fine as it piggybacks from IE and uses the old UrlMon interface according to Microsoft. However, if you need fine-grain control over cookies you probably will want to go with the other interface in my code snippet above.
Keep in mind that enabling TLS 1.2 for these COM interfaces is a huge pain too, in the case that your organization may restrict SSLv2/v3/TLS1.0/TLS1.1 and requires TLS 1.2, as for Windows 7 users you will actually need to make registry edits defined here: https://support.quovadisglobal.com/kb/a433/how-to-enable-tls-1_2-on-windows-server-2008-r2.aspx
Comments
Ilona Krammer
Nov 08 '16, 4:55 a.m.Dmitry A. Lesin
Sep 20 '17, 1:05 p.m.Ilona Krammer
Sep 21 '17, 1:50 a.m.Dmitry A. Lesin
Nov 27 '17, 11:35 a.m.