Don't miss your chance to take the Fabric Data Engineer (DP-700) exam on us!
Learn moreWe've captured the moments from FabCon & SQLCon that everyone is talking about, and we are bringing them to the community, live and on-demand. Starts on April 14th. Register now
Hello everyone,
I am attempting to save cookes from a POST request. I have done this before on Post Man but keep getting this error in Power BI: DataFormat.Error: We reached the end of the buffer.
Here is my code below:
let
TokenUrl = "https://baseurl.com/authentication/sign_in",
TokenOpts = "{""user"":""user123"", ""password"":""pass123""}",
TokenAct = Json.Document(Web.Contents(TokenUrl, [Headers=[#"Content-Type"="application/json"], Content=Text.ToBinary(TokenOpts)]))
in
TokenAct
I have have looked at other posts but nothing seems to address this scenerio.
Solved! Go to Solution.
In my experience, a "we reached the end of the buffer" error indicates that the response isn't in JSON format. It's hard to debug your code since you haven't provided an actual URL, but a few questions:
To help debug, I suggest being more explicit by writing more query steps in your Power Query M code. In other words, each step in your query should contain no more than one Power Query M function. This way, you can step through and try to understand where the failure occurs.
I also suggest creating a record of the contents you're sending in your POST request and using the `Json.FromValue` function to convert the record into a JSON binary format. In your case, I would define `TokenOpts` as a record and then convert that record into a JSON binary format as part of the contents in your POST request.
Here's a sample Power Query M query that illustrates what I'm saying:
let
TokenUrl = "https://baseurl.com/authentication/sign_in",
TokenBaseUrl = Text.Combine({Uri.Parts(TokenUrl)[Scheme],"://",Uri.Parts(TokenUrl)[Host]}),
TokenRelativePath = Uri.Parts(TokenUrl)[Path],
TokenQuery = Uri.Parts(TokenUrl)[Query],
TokenOpts = [
user = "user123",
password = "pass123"
],
TokenAct =
Web.Contents(
TokenBaseUrl,
[
Headers=[
#"Content-Type"="application/json"
],
RelativePath = TokenRelativePath,
Query = TokenQuery,
Content = Json.FromValue(TokenOpts)
]
),
jsonResponse = Json.Document(TokenAct)
in
jsonResponse
My hunch is that the JSON string you've put together is malformed in some way, which is causing the API server to return an error response in some non-JSON format.
Any help with AWSLAB/ AWSLABCORS would be extremely helpful. When I manually copy the generated cookies from Postman->PowerQuery my api call is successful. (see image below with hardcoded current cookies) However these cookies constantly refresh, so I need a way to get them dynamically.
here is the sample:
In my experience, a "we reached the end of the buffer" error indicates that the response isn't in JSON format. It's hard to debug your code since you haven't provided an actual URL, but a few questions:
To help debug, I suggest being more explicit by writing more query steps in your Power Query M code. In other words, each step in your query should contain no more than one Power Query M function. This way, you can step through and try to understand where the failure occurs.
I also suggest creating a record of the contents you're sending in your POST request and using the `Json.FromValue` function to convert the record into a JSON binary format. In your case, I would define `TokenOpts` as a record and then convert that record into a JSON binary format as part of the contents in your POST request.
Here's a sample Power Query M query that illustrates what I'm saying:
let
TokenUrl = "https://baseurl.com/authentication/sign_in",
TokenBaseUrl = Text.Combine({Uri.Parts(TokenUrl)[Scheme],"://",Uri.Parts(TokenUrl)[Host]}),
TokenRelativePath = Uri.Parts(TokenUrl)[Path],
TokenQuery = Uri.Parts(TokenUrl)[Query],
TokenOpts = [
user = "user123",
password = "pass123"
],
TokenAct =
Web.Contents(
TokenBaseUrl,
[
Headers=[
#"Content-Type"="application/json"
],
RelativePath = TokenRelativePath,
Query = TokenQuery,
Content = Json.FromValue(TokenOpts)
]
),
jsonResponse = Json.Document(TokenAct)
in
jsonResponse
My hunch is that the JSON string you've put together is malformed in some way, which is causing the API server to return an error response in some non-JSON format.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.
Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.
| User | Count |
|---|---|
| 5 | |
| 3 | |
| 3 | |
| 2 | |
| 2 |
| User | Count |
|---|---|
| 9 | |
| 8 | |
| 8 | |
| 5 | |
| 5 |