如何从c#向yammer组发布消息

时间:2014-12-05 17:43:14

标签: httpwebrequest yammer

我正在尝试使用restapi将消息发布到C#的Yammer组中。我尝试了很多可用的链接,但它不起作用。

任何人都可以为此提供确切的代码。

所有代码部分可用,我仍然坚持继续。

由于

1 个答案:

答案 0 :(得分:0)

这是我如何做的快速草稿;

public static string PostMessage(string data, int groupId, string accessToken)
{
    // Build request-URI
    var endpoint = "https://www.yammer.com/api/v1/messages.json";

    var sb = new StringBuilder(endpoint);
    if (endpoint.Contains("?")) 
        sb.Append("&access_token=" + accessToken);
    else 
        sb.Append("?access_token=" + accessToken);

    var uri = new Uri(sb.ToString());
    var request = WebRequest.Create(uri) as HttpWebRequest; // Create the request
    if (request == null)
        result = "It failed.";

    // Add request properties
    request.Headers.Add("Authorization", "Bearer " + accessToken);
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";

    // Format data
    var dataArr = data.Split(' ');
    var postData = "body=" + String.Join("+", dataArr);
    postData += "&group_id=" + groupId;

    byte[] bytes = Encoding.UTF8.GetBytes(postData);
    request.ContentLength = bytes.Length;

    // Fire away, and read the response
    try
    {
        var requestStream = request.GetRequestStream();
        requestStream.Write(bytes, 0, bytes.Length);

        var response = request.GetResponse();
        var stream = response.GetResponseStream();
        if (stream != null)
        {
            var reader = new StreamReader(stream);

            var response = reader.ReadToEnd();
            stream.Dispose();
            reader.Dispose();

            result = response;
        }
    }
    catch (WebException e)
    {
        var response = e.Response;
        // Handle the exception.
    }

    return result; // Return JSON result
}

请注意这个请求的一个重要事项是在请求中使用Authorization标头,并在其中包含“Bearer”,而不是在URL中;这不再有效。

当发布到组时,您可以看到使用“group_id”作为POST的主体参数。

希望这有帮助!祝你好运。

修改: API documentation of messages.json