After piecing together many suggestions with some trial and error, I was 
finally able to get the Jenkins job to run remotely with the VBScript (ASP) 
code below (with variables set to proper values such as strCrumb).  The 
returned Status will be 201 for success.  The Base64 functions were taken 
from 
https://stackoverflow.com/questions/496751/base64-encode-string-in-vbscript

    Dim strJenkinsURL, strParam1, strParam2, strCrumb, strUsername, 
strPassword
    strJenkinsURL = 
"https://<jenkinsURL>/job/testjob/buildWithParameters?token=test&param1="& 
strParam1 &"&param2="& strParam2

    Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
    HttpReq.Open "POST", strJenkinsURL, False
    HttpReq.setOption 2, 13056
    HttpReq.setRequestHeader "Jenkins-Crumb", strCrumb
    HttpReq.setRequestHeader "Authorization", "Basic "& 
Base64Encode(strUsername &":"& strPassword)
    HttpReq.Send
    Response.Write "<br>Status: "& HttpReq.Status & vbNewline
    Response.Write "<br>Response: "& HttpReq.responseText & vbNewline

    Function Base64Encode(sText)
        Dim oXML, oNode
        Set oXML = CreateObject("Msxml2.DOMDocument.3.0")
        Set oNode = oXML.CreateElement("base64")
        oNode.dataType = "bin.base64"
        oNode.nodeTypedValue = Stream_StringToBinary(sText)
        Base64Encode = oNode.text
        Set oNode = Nothing
        Set oXML = Nothing
    End Function

    Private Function Stream_StringToBinary(Text)
        Const adTypeText = 2
        Const adTypeBinary = 1
        Dim BinaryStream 'As New Stream
        Set BinaryStream = CreateObject("ADODB.Stream")
        BinaryStream.Type = adTypeText
        BinaryStream.CharSet = "us-ascii"
        BinaryStream.Open
        BinaryStream.WriteText Text
        BinaryStream.Position = 0
        BinaryStream.Type = adTypeBinary
        BinaryStream.Position = 0
        Stream_StringToBinary = BinaryStream.Read
        Set BinaryStream = Nothing
    End Function




On Tuesday, July 9, 2019 at 5:59:57 PM UTC-5, slide wrote:
>
> You would have to implement a function to base64 encode the data (I should 
> have mentioned that in my previous post). 
>
> On Tue, Jul 9, 2019 at 2:41 PM D. C. <[email protected] <javascript:>> 
> wrote:
>
>> Thanks for the suggestions.  I had actually already tried "HttpReq.Open 
>> "POST", strJenkinsURL, False, strUsername, strPassword" and it didn't 
>> help.  Since the error returned has to do with the crumb (403 No valid 
>> crumb was included), I hoped the auth part was actually working, but maybe 
>> not.  I have tried again with passing the username/password as part of the 
>> Open method, but still no luck there.
>>
>> I tried the .setRequestHeader "Authentication" like you showed but it 
>> returns "Type mismatch: 'Base64Encode'" so something is wrong with the 
>> syntax.
>>
>>
>> On Tuesday, July 9, 2019 at 2:06:57 PM UTC-5, slide wrote:
>>>
>>> I think you want to pass the username/password as part of the Open 
>>> method call
>>>
>>> HttpReq.Open "POST", strJenkinsURL, False, strUsername, strPassword
>>>
>>> In addition, you may need to set an Authorization header, but I am not 
>>> sure how the  MSXML2.ServerXMLHTTP object handles that if you pass the 
>>> username/password with the Open call.
>>>
>>> You would need to do something like this if just passing it via the Open 
>>> method doesn't work:
>>>
>>> HttpReq.setRequestHeader "Authentication", "Basic " & 
>>> Base64Encode(strUsername & ":" & strPassword)
>>>
>>> On Tue, Jul 9, 2019 at 10:54 AM D. C. <[email protected]> wrote:
>>>
>>>> I have searched all over but haven't found a solution to this. The 
>>>> JenkinsAPI page doesn't provide information on using VBScript either.
>>>> I am trying to start a job in Jenkins from a classic ASP web page (so 
>>>> VBScript - code below).  I used wget from examples on the Jenkins API page 
>>>> to get the Jenkins crumb. The testjob is configured with "Trigger builds 
>>>> remotely" and I included the token in the URL string as specified in the 
>>>> examples on the Jenkins API page. I am unsure if the login information is 
>>>> setup correctly in my .setRequestHeader, but the error I am getting is "No 
>>>> valid crumb" even though I include the crumb in the header.  Can anyone 
>>>> tell me if the .setRequestHeaders are in the correct format or anything 
>>>> else that might help me get this to work?  I have also tried using curl to 
>>>> start the job, but that doesn't start the job, but it also doesn't return 
>>>> an error. From what I have found, curl should return an HTTP 201 response 
>>>> to indicate the job was started. I'm not getting that.  I would prefer to 
>>>> start the job from VBScript; curl was just for a test.
>>>>
>>>> VBScript:
>>>> --------------
>>>>     Dim strJenkinsURL, HttpReq
>>>>     strJenkinsURL = 
>>>> "http://<jenkinsURL>/job/testjob/buildWithParameters?token=test&Description=sometext"
>>>>
>>>>     Set HttpReq = Server.CreateObject("MSXML2.ServerXMLHTTP")
>>>>     HttpReq.Open "POST", strJenkinsURL, False
>>>>     HttpReq.setRequestHeader "UserName", "<jenkinsuser>"
>>>>     HttpReq.setRequestHeader "Password", "<userpassword>"
>>>>     HttpReq.setRequestHeader "Jenkins-Crumb", "<validcrumb>"
>>>>     HttpReq.Send
>>>>     Response.Write "<br>Status: "& HttpReq.Status & vbNewline
>>>>     Response.Write "<br>Response: "& HttpReq.responseText & vbNewline
>>>>
>>>> Result
>>>> ---------------------
>>>> Status: 403
>>>> Response: HTTP ERROR 403
>>>> Problem accessing /job/testjob/buildWithParameters. Reason: No valid 
>>>> crumb was included in the request
>>>>
>>>> curl:
>>>> ------------------------
>>>> curl -v --user <jenkinsuser>:<password> -X POST "
>>>> http://jenkinsurl/job/testjob/buildWithParameters?token=test&Description=sometext";
>>>>  
>>>> -H "Jenkins-Crumb:<crumb value>"
>>>>
>>>> * timeout on name lookup is not supported
>>>> *   Trying xxx.xxx.xxx.xxx...
>>>> * TCP_NODELAY set
>>>>   % Total    % Received % Xferd  Average Speed   Time    Time     Time  
>>>> Current
>>>>                                  Dload  Upload   Total   Spent    Left  
>>>> Speed
>>>>   0     0    0     0    0     0      0      0 --:--:-- --:--:-- 
>>>> --:--:--     0* Connected to jenkinsurl (xxx.xxx.xxx.xxx) port 80 (#0)
>>>> * Server auth using Basic with user 'jenkinsuser'
>>>> > POST /job/testjob/buildWithParameters?token=test&Description=sometext 
>>>> HTTP/1.1
>>>> > Host: jenkinsurl
>>>> > Authorization: Basic Y3MyYXV0b3Rlc3Q6QXV0b21hdGlvbjE=
>>>> > User-Agent: curl/7.55.0
>>>> > Accept: */*
>>>> > Jenkins-Crumb:<crumb value>
>>>> >
>>>> * HTTP 1.0, assume close after body
>>>> < HTTP/1.0 302 Found
>>>> < Location: 
>>>> https://jenkinsurl/job/testjob/buildWithParameters?token=test&Description=sometext
>>>> < Server: BigIP
>>>> * HTTP/1.0 connection set to keep alive!
>>>> < Connection: Keep-Alive
>>>> < Content-Length: 0
>>>> <
>>>>   0     0    0     0    0     0      0      0 --:--:-- --:--:-- 
>>>> --:--:--     0
>>>> * Connection #0 to host jenkinsurl left intact
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Jenkins Users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/jenkinsci-users/acd05793-f5c3-47c1-9049-75835b7933a2%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/jenkinsci-users/acd05793-f5c3-47c1-9049-75835b7933a2%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>> -- 
>>> Website: http://earl-of-code.com
>>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Jenkins Users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jenkinsci-users/40ab289f-2d68-465d-8c00-4791968a38a0%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jenkinsci-users/40ab289f-2d68-465d-8c00-4791968a38a0%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
> -- 
> Website: http://earl-of-code.com
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/a149cc39-06a9-42b0-bf84-abcf16bce964%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to