【问题标题】:Azure function v4 dotnet-isolated - How do I read data in www-form-urlencoded?Azure 函数 v4 dotnet-isolated - 如何读取 www-form-urlencoded 中的数据?
【发布时间】:2022-11-09 05:29:09
【问题描述】:

我创建了一个接收来自 slack 用户的斜杠命令的机器人。我正在尝试访问内容类型为 www-form-urlencoded 的松弛消息的有效负载。

我尝试解析为查询:

[Function("SetSubject")]
public async Task<HttpResponseData> SetSubjectPost(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestData req, FunctionContext executionContext)
{
    var parsedFormBody = HttpUtility.ParseQueryString(req.Url.Query);
    var text = parsedFormBody["text"];
    var userId = parsedFormBody["user_id"];
}

我尝试从FunctionContext 获取它:

[Function("SetSubject")]
public async Task<HttpResponseData> SetSubjectPost(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestData req, FunctionContext executionContext)
{
    var text = executionContext.BindingContext.BindingData["text"]?.ToString();
    var userId = executionContext.BindingContext.BindingData["user_id"]?.ToString();
}

还尝试将正文解析为MultipartFormData

[Function("SetSubject")]
public async Task<HttpResponseData> SetSubjectPost(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestData req, FunctionContext executionContext)
{
    var parsedFormBody = await MultipartFormDataParser.ParseAsync(req.Body);
    var text = parsedFormBody.GetParameterValue("text");
    var userId = parsedFormBody.GetParameterValue("user_id");
}

有没有办法从 www-form-urlencoded 获取数据?

【问题讨论】:

    标签: .net azure azure-functions slack


    【解决方案1】:

    您需要将正文读取为字符串,然后将其解析为查询字符串:

    [Function("SetSubject")]
    public async Task<HttpResponseData> SetSubjectPost(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequestData req, FunctionContext executionContext)
    {
        // Read body
        var stringBody = await new StreamReader(req.Body).ReadToEndAsync();
    
        // Parse as query string
        var keyValues = HttpUtility.ParseQueryString(stringBody);
        var text = keyValues["text"];
        var userId = keyValues["user_id"];
    
        ...
    }
    
    

    【讨论】:

      猜你喜欢
      • 2022-08-09
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 2015-02-07
      • 2018-09-23
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      相关资源
      最近更新 更多