Forum Discussion
Not being able to access data via API Post Request
- 5 years ago
Hi ziyabikram96
Including Content in your request makes the Web.Contents perform a POST, for example:
Source = Json.Document(Web.Contents(url,[ Headers = [#"Content-Type"="application/json"], Content = Text.ToBinary(body) ] ))I don't know exactly what you need to provide in the request (e.g. API Auth,Headers) as I don' t know the API,but this should get you started. Post back if you need further assistance.
regards
Phil
Hi ziyabikram96
Including Content in your request makes the Web.Contents perform a POST, for example:
Source = Json.Document(Web.Contents(url,[
Headers = [#"Content-Type"="application/json"],
Content = Text.ToBinary(body)
]
))
I don't know exactly what you need to provide in the request (e.g. API Auth,Headers) as I don' t know the API,but this should get you started. Post back if you need further assistance.
regards
Phil
- davemays2 years agoNew Member
What if the API requires Windows Authentication?
Excel reports back that neither adding "contents" nor adding a method="POST" is allowed for anything but anonymous authentication. How do you post against an API behind Windows Authentication?
If you were building a C# application, it can easily use Windows Authentication to negotiate with the server, and you don't have to manually add the credentials either. It seems that post requests to Windows autorized APIs would be a very common use case in corporate environments, but I have not found a way to do so in Power Query. - Bokangmaela1 year agoHelper I
Is there a way to cater for a PUT request ?
- MarcusR111 months agoHelper II
Hi PhilipTreacy
I've got a similar issue, i can run all these in postman with no issues, but PQ causes no end of problems. this is what i have, but it throws errors DataSource.Error: Web.Contents failed to get contents from 'https://myapidomain.com/v0/auth/code' (500): Internal Server Error
and
Expression.Error: We cannot convert a value of type Binary to type Text. Details: Value=[Binary] Type=[Type]let
apiBaseUrl = #"API URL",
apiEmail = #"API Email",
accessCode = #"Access Code",AuthUrl = apiBaseUrl & "/auth/code",
RawBody = "{
""meta"": {},
""data"": {
""email"": """ & apiEmail & """,
""code"": """ & accessCode & """
}
}",Response = Web.Contents(
AuthUrl,
[
Headers = [
#"Content-Type" = "application/json",
#"Accept" = "application/json",
#"Accept-Language" = "en",
#"User-Agent" = "PostmanRuntime/7.32.0" // mimic Postman
],
Content = Text.ToBinary(RawBody, TextEncoding.Utf8)
]
),ResponseText = Text.FromBinary(Response, TextEncoding.Utf8),
Parsed = Json.Document(ResponseText),
AccessToken = Parsed[data][access_token]
in
AccessToken