c#当对象不平坦时如何发布FormUrlEncodedContent

时间:2016-11-18 04:49:15

标签: c# asp.net-web-api slack-api slack

尝试发布到slack api并询问如何在我的帖子中包含附件部分。我的方法看起来像

 public KeyValuePair<string, string>[] GetParameters()
    {
        List<KeyValuePair<string, string>> parameters = new List<KeyValuePair<string, string>>();
        parameters.Add(new KeyValuePair<string, string>("token", Token));
        parameters.Add(new KeyValuePair<string, string>("channel", Channel));
        parameters.Add(new KeyValuePair<string, string>("text", Text));
        parameters.Add(new KeyValuePair<string, string>("as_user", As_User.ToString()));
        return parameters.ToArray();
    }

但是我的对象有一个数组,我需要包含看起来像

的附件
public class Attachment
{
    public string text{get; set;}
    public string pretext{ get; set;}
}

试图弄清楚如何在我返回的keyvaluepair数组中包含附件。或者这可能不是正确的方法吗?

我的价值在于我如何创建帖子

using (HttpClient client = new HttpClient())
            {
                var parameters = response.GetParameters();
                var requestContent = new FormUrlEncodedContent(parameters);
                HttpResponseMessage r = await client.PostAsync(baseurl, requestContent);
                HttpContent responseContent = r.Content;
            }

1 个答案:

答案 0 :(得分:1)

假设我们谈到使用chat.postMessage向频道发布消息,附件只是请求中的另一个参数,例如tokenchannel。因此,您可以在attachments方法中将parameters添加到GetParameters

attachments的值必须是JSON格式的附件数组。

首先将Attachment对象转换为数组。然后使用JavaScriptSerializer.Serialize

将其转换为JSON字符串