Forum Discussion
How to get data from a webservice with POST method
I'm trying to get data from a webservice by using the POST-method (JSON formatted), the response would also be JSON. But executing the following code in the advanced query editor...
let
Quelle = WebAction.Request("POST", "http://server.tld:8080/portal/service/query",
[
Headers =
[#"Content-Type" = "application/json"],
Content=Text.ToBinary("{ ""query"": { ""Sample"": [""B1"", ""B2"", ""B3"", ""B4"", ""B5""] }, ""columns"": [ { ""termName"": ""IC50"" }, { ""termName"": ""OD"" }, { ""termName"": ""Replicate"" }, { ""termName"": ""Sample"" } ] }")
]
),
json_doc = Json.Document(Quelle),
tabelle = Record.ToTable(json_doc)
in
tabelle...only this very uninformative error message occurs:
Expression.Error: We haven't been given permission to perform actions against this resource.
The webservice is locked with credentials so in the data source settings the access is set to 'basic' with entered user name and password. I already tried diverse combinations like also anonymous access or alternative methods like Web.Contents too, but the error message remains unimpressed.
Hope, somebody might help..
Thanks
4 Replies
- ImkeFCommunity Champion
Hi Anonymous ,
this message comes from the API you're querying.
Does it use OAauth?
Then you have to create a custom connector unfortunately to get the auth right.- AnonymousNot applicable
ImkeF
That's the case - it is not OAuth but simply Basic Authentication.
- ImkeFCommunity Champion
Hi Anonymous ,
unfortunately the bad news is that if the native basic auth in PBI doesn't work, you have to build a custom connector for it as well.
- AnonymousNot applicable
Hi ImkeF
The error seems to occur earlier, probably not caused by the authentication.
We try to run against an Apache TomCat Server, but this one does not return the answer with this specific error message. On the contrary the webservices access log was empty so it seems like if PBI would not even post anything, otherwise the access log would show that somebody tried to get access even if it's with wrong credentials or so.