Ваш вопрос на самом деле можно разделить на три части
1. Публиковать каждые 10 секунд => Timer
+ WebClient
2. Получить данные, преобразовать в JSON, затем сохранить в файл => JsonConvert
+File.WriteAllText()
3. Не блокируйте пользовательский интерфейс (и я предполагаю, что сам поток запросов) => async await
Вы не включили структуру данных, но я полагаю, что вы можете проверить JsonConvertсебя, быстрый пример для отдыха.
Timer timer = new Timer(async (state) =>
{
string feedback = "";
try
{
var uriOfAPI = new Uri("http://httpbin.org/post");
using (WebClient webClient = new WebClient())
{
webClient.Headers["ContentType"] = "application/json";
feedback = await webClient.UploadStringTaskAsync(uriOfAPI, "POST", "whatever the input should be");
}
}
catch (Exception)
{
// how you are going to handle when API malfunction
}
// feedback convert to json(in this example, it already is)
File.WriteAllText(@".\output.txt", feedback);
}, null, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(10));