Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredGet Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now
I have the following code to create a json object and then post this to a streaming dataset in powerBI. With the code i have so far i seem to be finding the dataset and table just fine but i am getting a badrequest on my json object. Is there something simple im missing in the code below that is preventing this from working?
using (var client = new PowerBIClient(new Uri(ApiUrl), tokenCredentials))
{
var payload = new testValues
{
value1 = "test",
value2 = counter,
value3 = DateTime.UtcNow
};
string stringPayload = JsonConvert.SerializeObject(payload);
StringContent postContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
ODataResponseListDataset datasets = client.Datasets.GetDatasetsInGroup(GroupId);
client.Datasets.PostRowsInGroup(GroupId, datasets.Value.LastOrDefault().Id, "RealTimeData", postContent);
counter++;
return;
}and below is the testValues class just incase that can also shed some light on my issue here:
public class testValues
{
[JsonProperty("value1")]
public string value1 { get; set; }
[JsonProperty("value2")]
public int value2 { get; set; }
[JsonProperty("value3")]
public DateTime value3 { get; set; }
}
Solved! Go to Solution.
You can add try..catch blocks to get the bad request details.
try
{
client.Datasets.PostRowsInGroup(groupId, yourdatesetid, "RealTimeData", dataObj);
}
catch (HttpOperationException ex)
{
//Bad Request
var content = ex.Response.Content;
Console.WriteLine(content);
}
Based on my test, my below demo work.
static void Main(string[] args)
{
var credentials = new TokenCredentials(accessToken);
using (var client = new PowerBIClient( credentials))
{
var payload = new testValues
{
value1 = "test",
value2 = 1,
value3 = DateTime.UtcNow
// value3 = DateTime.UtcNow.ToString("s") + "Z"
};
IList<testValues> list = new List<testValues>();
list.Add(payload);
var stringPayload = JsonConvert.SerializeObject(list);
object dataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Object>(stringPayload.ToString());
//StringContent postContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
try
{
client.Datasets.PostRowsInGroup(groupId,datasetId, "RealTimeData", dataObj);
}
catch (HttpOperationException ex)
{
//Bad Request
var content = ex.Response.Content;
Console.WriteLine(content);
}
}
Console.WriteLine("Done");
Console.ReadKey();
}
You can add try..catch blocks to get the bad request details.
try
{
client.Datasets.PostRowsInGroup(groupId, yourdatesetid, "RealTimeData", dataObj);
}
catch (HttpOperationException ex)
{
//Bad Request
var content = ex.Response.Content;
Console.WriteLine(content);
}
Based on my test, my below demo work.
static void Main(string[] args)
{
var credentials = new TokenCredentials(accessToken);
using (var client = new PowerBIClient( credentials))
{
var payload = new testValues
{
value1 = "test",
value2 = 1,
value3 = DateTime.UtcNow
// value3 = DateTime.UtcNow.ToString("s") + "Z"
};
IList<testValues> list = new List<testValues>();
list.Add(payload);
var stringPayload = JsonConvert.SerializeObject(list);
object dataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Object>(stringPayload.ToString());
//StringContent postContent = new StringContent(stringPayload, Encoding.UTF8, "application/json");
try
{
client.Datasets.PostRowsInGroup(groupId,datasetId, "RealTimeData", dataObj);
}
catch (HttpOperationException ex)
{
//Bad Request
var content = ex.Response.Content;
Console.WriteLine(content);
}
}
Console.WriteLine("Done");
Console.ReadKey();
}
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!