Search code examples
windowspowershellapiinvoke-webrequest

Problems when calling an API


We have two APIs that does a POST and GET requests. Both of them used to work perfectly fine but the API that does POST started giving an error:

Invoke-WebRequest : The underlying connection was: An unexpected error occurred on a receive.`

I have been trying to research for few days and all the KBs pointing to some sort of SSL/TLS and adding this piece of code:

[Net.ServicePointManager]::SecurityProtocol = "SystemDefault,Tls12, Tls11, Tls, Ssl3"

but I already had this code from the start. However, I cannot find a solution to my problem.

OS : Windows 2012
PowerShell Version: 4.0

function funName ($Val1, $Val2) {
    [Net.ServicePointManager]::SecurityProtocol = "SystemDefault,Tls12, Tls11, Tls, Ssl3"
    #[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    #[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls12

    $url = "https://someAPI/post.request/do-something"
    $user = "username"
    $pass = "password"
    $pair = "$($user):$($pass)"
    $encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
    $basicAuthValue = "Basic $encodedCreds "

    $Headers = @{
        "Accept"="application/json"
        Authorization = $basicAuthValue
    }

    $Body = @{
        '@type' ='x'
        parm1 = $Val1
        parm2 = $Val2
    }

    #[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
    Invoke-WebRequest -Uri $url -Headers $Headers -Method Post -Body $Body  | Out-Null
}

## Deactivation Request ffffffff##
funName -RequestID Val1 adID Val2

As stated earlier, this used to work up until last week.


Solution

  • I was working on a similar request to retrieve data from API and I found out that I was calling my function as funName -val1 1234 val2 9999 where I was missing "-" on my seconda parameter. As soon as I fixed that it starting working again funName -val1 1234 -val2 9999 . Thanks Stackoverflow community for the help on this.