Forum Discussion

Markzolotoy's avatar
Markzolotoy
Impactful Individual
5 years ago
Solved

Keep getting 400 error

I have a working API that when I hit from Query keeps returning 400 error no matter what I do. I understand that without showing API documentation which I dont have it might be hard to help but still I am asking for help. Here are some relevant details fom Postman.

My code:

 

 

api_url = "https://localhost:446/token",
body = "{ ""client_id"": ""xxxxxx"",  ""username"": ""bba85b3d-5121-4439-8f3f-4c1a644bea5f"",  
         ""client_secret"": ""xxxxxxxxxxxxxxxxxx"", ""grant_type"": ""password""}",
    
    EncodedCredentials = Text.ToBinary(body),
    
    Token_Response  = Json.Document(Web.Contents(api_url,
    [ 
      Headers = [#"Content-Type"="application/x-www-form-urlencoded"],
      Content=EncodedCredentials
    ]
    )
    )

 

 

No matter what I do, I get 400 back. In Postman misspelled parameters will generate an error message that comes back, but from PI I get nothing, just 400. Please help, I am stuck at this point.

 

Thanks

  • Finally figured it out. Here is how I am preparing parameters:

    Text.ToBinary(Uri.BuildQueryString(body))

    After that the backend gets proper parameters.

2 Replies

  • Markzolotoy's avatar
    Markzolotoy
    Impactful Individual

    Finally figured it out. Here is how I am preparing parameters:

    Text.ToBinary(Uri.BuildQueryString(body))

    After that the backend gets proper parameters.

  • Markzolotoy's avatar
    Markzolotoy
    Impactful Individual

    I finally was able to put a break point into API's code. What happens is that no parameters are available in the code. So, what exaclty is not working? Does Query actually send parameters?

     

    I am using OAuth. Here is the funtion:

    public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)

     

    conetxt is where I am checking for parameters. What I see is this:

    when the same is called from Postman Results View has all the parameters.