Как преобразовать поток в построитель строк - PullRequest
0 голосов
/ 10 октября 2019

У меня есть триггер Blob, и в этом есть объект потока. Я хочу передать контент / текст на пост httpclinet. Как я могу это сделать?

У меня есть CSV-файл с 3 строками данных, каждый столбец разделен запятой

Содержимое в моем CSV:

File1,121,12123,5676,fgfg,gfg,fg,
File2,ertet,etert,ert,
File3,354345,345345
[FunctionName("Function1")]
public static void Run([BlobTrigger("expenses/{name}.csv", Connection = "AzureWebJobsStorage")]Stream inputBlob, string name,
    [Table("Expenses", Connection = "AzureWebJobsStorage")] IAsyncCollector<Expense> expenseTable,
    ILogger log)
{

Здесь необходимо преобразовать поток inputBlob в строку / построитель строк и получить результат, совпадающий с данными, содержащимися в файле.

После этого я хочу вызвать (вызов PostAsync) API с типом содержимого: text / csv и данными, упомянутыми выше. Я читал о httplient. Если я использую HttpClient как передать тип содержимого и тело запроса

1 Ответ

0 голосов
/ 11 октября 2019

Для первого вопроса вы можете использовать StreamReader, фрагмент кода, как показано ниже:

    [FunctionName("Function1")]
    public static void Run([BlobTrigger("expenses/{name}.csv", Connection = "AzureWebJobsStorage")]Stream inputBlob, string name,
    [Table("Expenses", Connection = "AzureWebJobsStorage")] IAsyncCollector<Expense> expenseTable,
    ILogger log)
    {

        //your other code

        using (StreamReader reader = new StreamReader(myBlob))
        {
            string my_content = reader.ReadToEnd();

        }
    }

Для вашего второго вопроса, когда вы используете HttpClient, добавьте следующий код в вашу функцию:

  [FunctionName("Function1")]
    public static void Run([BlobTrigger("expenses/{name}.csv", Connection = "AzureWebJobsStorage")]Stream inputBlob, string name,
    [Table("Expenses", Connection = "AzureWebJobsStorage")] IAsyncCollector<Expense> expenseTable,
    ILogger log)
    {

     //your other code.

     //here, use the HttpClient

     //define the http verb
     var method = new HttpMethod("POST"); 

     //add the content to body
     var request = new HttpRequestMessage(method, requestUri)
      {
            Content = new StringContent("your string to post")
      };

      //add content type
      request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("text/csv"));

      //send
      var httpClient = new HttpClient();
      var result = httpClient.SendAsync(request).Result;

    }
...