Power BI is turning 10, and we’re marking the occasion with a special community challenge. Use your creativity to tell a story, uncover trends, or highlight something unexpected.
Get startedJoin us for an expert-led overview of the tools and concepts you'll need to become a Certified Power BI Data Analyst and pass exam PL-300. Register now.
Hi,
Such generic terms describing this issue, I don't even know how to search for a resolution... I created and Azure Web Function and I can call the Azure Web Function from Postman - it's working without issue.
From Postman,
GET https://tiwlfunctions.azurewebsites.net/api/tiwlConnector
Request Header
sx-functions-key: ntw...
Content-Type: application/json
Cache-Control: no-cache
Postman-Token: deadbeef-dead-dead-beef-deadbeefcafe
Host: tiwlfunctions.azurewebsites.net
Content-Length: 49
Request Body
{"clientName": "TI","resource": "Staff"}
In my Power BI Dataflow, I'm trying to call this API just the same using WebContent. But it doesn't work. The Azure API never gets hit. When I first created the Power Query WebContents, I accidently left out the Content, and it does hit the Azure API. Although, the Web Function will just return a BadRequest because it requires a Body (Content). However, every attempt I've made to include the Content yields the same result - it doesn't hit the API. There's no way to know why. There's no feedback in Power BI to diagnose what the problem is. I've tried many different header types, formatting, with/without Host and Content-Length, Cache-Control and and even Postman-Token. Any suggestions would be appreciated.
let
// Define the request body
requestBody = Json.FromValue([
clientName = ParameterClientName,
resource = "Staff"
]),
requestBodyText = Text.FromBinary(requestBody),
baseUrl = ParameterConnectorAzureUrl,
azureXCode = ParameterConnectorAzureXCode,
host = "tiwlfunctions.azurewebsites.net",
contentLen = Text.Length(requestBodyText),
// Define the request headers
headers = [
#"Content-Type"="application/json",
#"x-functions-key"=azureXCode,
Host=host,
#"Content-Length"=contentLen
],
binContent = Text.ToBinary(requestBody),
xbinContent = Text.FromBinary(binContent),
dataRequest = Web.Contents(baseUrl, [
Headers=headers,
Content=Text.ToBinary(requestBodyText),
RelativePath = "api/tiwlConnector",
Query = null
])
in
dataRequest
Solved! Go to Solution.
I was probably was stuck on this for about 7 hours. Turns out adding "Content" the Power Query WebContents will do a POST, not a GET, whereas my Azure Function was only a GET.
I was probably was stuck on this for about 7 hours. Turns out adding "Content" the Power Query WebContents will do a POST, not a GET, whereas my Azure Function was only a GET.
Yes, you are correct.
For any Power Query function, you can always first go to the official document to find what a parameter represents.
Power Query M function reference - PowerQuery M | Microsoft Learn
Web.Contents - PowerQuery M | Microsoft Learn
Best Regards,
Jing
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
17 | |
9 | |
8 | |
7 | |
7 |