using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace StreamDataToPowerBI
{
class Program
{
// Paste your own push URL below
// e.g. https://api.powerbi.com/beta/2b958e42-b81e-441d-af13-801621ce8401/datasets/a5a15fd1-8cb6-4527-b2e6-f22f2a274d4d/rows?key=apsBX1ef%2F8a7ToL2xxxxxxxxxxxZeGATSyRYerZKpnu%2FbE2g2yDM0%2Bs4cDW9mqu5zKoGcQ27vJuh0Huw%3D%3D
private static string realTimePushURL = "** paste your push URL here **";
static void Main(string[] args)
{
while (true) {
try
{
// Declare values that we're about to send
String currentTime = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ss.fffZ"); //2017-11-03T06:23:35.521Z
Random r = new Random();
int currentValue = r.Next(0, 100);
// Send POST request to the push URL
// Uses the WebRequest sample code as documented here: https://msdn.microsoft.com/en-us/library/debx8sh9(v=vs.110).aspx
WebRequest request = WebRequest.Create(this.PostUri);
request.Method = "POST";
string postData = String.Format("[{{ "time": "{0}", "value": {1}}}]", currentTime, currentValue);
Console.WriteLine(String.Format("Making POST request with data: {0}", postData));
// Prepare request for sending
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
// Get the request stream.
Stream dataStream = request.GetRequestStream();
// Write the data to the request stream.
dataStream.Write(byteArray, 0, byteArray.Length);
// Close the Stream object.
dataStream.Close();
// Get the response.
WebResponse response = request.GetResponse();
// Display the status.
Console.WriteLine(String.Format("Service response: {0}", ((HttpWebResponse)response).StatusCode));
// Get the stream containing content returned by the server.
dataStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(dataStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
// Display the content.
Console.WriteLine(responseFromServer);
// Clean up the streams.
reader.Close();
dataStream.Close();
response.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
// Wait 1 second before sending
System.Threading.Thread.Sleep(1000);
}
}
}
}