Forum Discussion

dpombal's avatar
dpombal
Post Partisan
6 years ago
Solved

HTTP POST request with form urlencoded data

Hi all,

 

I am trying to reproduce below API HTTP Post call , successful in Postman:

Postman configuration

  1. Authorization key with a tokensequence
  2. Body with 3 parameters and important select option x-www-form-urlencoded

 

HeaderParameters

 

I tried several M codes with this template and modifications

 

let
auth_key ="XXXXXXXXXXXXX",
base_url = "www.WEBPAGE.com",
extension = "/api/datos_de_recarga/chargedata.php",
url = base_url &extension,
header= [#"Authorization" = auth_key,
#"Content-Type" = "application/x-www-form-urlencoded"],
content1= "{
""LOGIN"":""[email protected]"",
""PASSWORD"":""PASS"",
""INICIO"":""2019-11-01T00:00:00Z""
}",
webdata1 = Web.Contents(url, [Headers=header,Content = Text.ToBinary(content1)]),
response1 = Json.Document(webdata1)
in
response1

 

 

 

All with denied access

Regards

  • This option worked finally for me, will try to make code better using parameters, but is is a good start.

     

    CODE OK

    let
    auth_key ="XXXXXXXXXXXXXXXXXXX",
    base_url = "www.hostname.com",
    extension = "/api/datos_de_recarga/chargedata.php",
    url = base_url &extension,
    header= [#"Authorization" = auth_key,
    #"Content-Type" = "application/x-www-form-urlencoded"],
    content1= "[email protected]&PASSWORD=XXXXXX&INICIO=2019-11-01T00:00:00Z",
    webdata1 = Web.Contents(url, [Headers=[#"Authorization" = auth_key,
    #"Content-Type" = "application/x-www-form-urlencoded"],Content = Text.ToBinary(content1)]),
    response1 = Json.Document(webdata1)
    in
    response1

5 Replies

  • artemus's avatar
    artemus
    Microsoft Employee

    Try using: Uri.BuildQueryString(record) to build your query string instead of manually entering it as a string. Might be some encoding issue.

    • dpombal's avatar
      dpombal
      Post Partisan

      can you assist me? i tried my characters with and without encoding...think this is not my current issue

      where to use Uri.BuildQueryString(record)

      • artemus's avatar
        artemus
        Microsoft Employee

        First change

        content1= "{
        ""LOGIN"":""[email protected]"",
        ""PASSWORD"":""PASS"",
        ""INICIO"":""2019-11-01T00:00:00Z""
        }",

         

        to

         

        content1 =

        [

           LOGIN = "[email protected]",

           PASSWORD = "PASS",

           INCIO = #datetimezone(2019, 11, 1, 0, 0, 0, 0, 0)

        ]

         

        then change:

        Text.ToBinary(content1)

        with

        Text.ToBinary(Uri.BuildQueryString(content1))