开发者社区 问答 正文

dingtalk.corp.message.corpconversation.asyncsend企业会话消息异步发送

我的语言是.net
首先我的参数列表
private static string SendMsg(string msgtype,string msgcontent,AccessToken accesstoken, string userid_list)
        {
            string str = "";

            string url = Urls.message_send2;
//这里userAgent需要特殊设置吗,我代码里是空
            string userAgent = "";
            Dictionary<string, object> postParameters = new Dictionary<string, object>();
            postParameters.Add("method", "dingtalk.corp.message.corpconversation.asyncsend");
            postParameters.Add("session", accesstoken.Value);
            postParameters.Add("timestamp", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
            postParameters.Add("v", "2.0");
            postParameters.Add("format", "json");

            postParameters.Add("msgtype", msgtype);
            postParameters.Add("agent_id", ConfigHelper.FetchAgentID());
            postParameters.Add("userid_list", userid_list);
            //postParameters.Add("dept_id_list", "45727508");
            postParameters.Add("msgcontent", msgcontent);

            System.Net.HttpWebResponse webResponse = HttpFormUpload.Dingmsg(url, userAgent, postParameters);
            // Process response
            System.IO.StreamReader responseReader = new System.IO.StreamReader(webResponse.GetResponseStream());
            string content = responseReader.ReadToEnd();
            webResponse.Close();

            str = content;
            HApp.Core.Helper.LogHelper.WriteLog("msg", str);
            HApp.Core.Helper.LogHelper.WriteLog("token", accesstoken.Value);
            return str;
        }
上面方法一看,简单,应该并没有什么问题,顺便贴出DingMsg方法

public static HttpWebResponse Dingmsg(string postUrl, string userAgent, Dictionary<string, object> postParameters)
        {
            string formDataBoundary = String.Format("----------{0:N}", Guid.NewGuid());
            string contentType = "Content-Type: application/x-www-form-urlencoded;charset=utf-8";

            byte[] formData = GetMultipartFormData(postParameters, formDataBoundary);

            return Dingmsg(postUrl, userAgent, contentType, formData);
        }

        private static HttpWebResponse Dingmsg(string postUrl, string userAgent, string contentType, byte[] formData)
        {
            HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;

            if (request == null)
            {
                throw new NullReferenceException("request is not a http request");
            }

            // Set up the request properties.
            request.Method = "POST";
            request.ContentType = contentType;
            request.UserAgent = userAgent;

            request.CookieContainer = new CookieContainer();

            request.ContentLength = formData.Length;

            using (Stream requestStream = request.GetRequestStream())
            {
                requestStream.Write(formData, 0, formData.Length);
                requestStream.Close();
            }

            return request.GetResponse() as HttpWebResponse;
        }

返回的不是我请求参数设置的json类型,而是xml(很奇怪,说明我的参数它应该是没有收到)
下面贴出返回结果
<?xml version="1.0" encoding="utf-8" ?><error_response><code>21</code><msg>Missing method</msg><sub_msg>http传入的参数加入method字段</sub_msg><request_id>ztb762y5fpog</request_id></error_response><!--top010178045103.n.et2-->有大佬知道,这个异步消息怎么推送吗,或者有个简单demo什么的

展开
收起
i没有蜡 2017-09-19 09:31:07 5256 分享 版权
2 条回答
写回答
取消 提交回答
  • Redingtalk.corp.message.corpconversation.asyncsend企业会话消息异步发送
    建议使用TopSdk  但是这玩意不和老版本兼容
    2017-09-29 17:29:33
    赞同 展开评论
  • Redingtalk.corp.message.corpconversation.asyncsend企业会话消息异步发送
    全是安装官方文档的来的,很纳闷,这个推送请求的地址是不是一般的已oapi.dingtalk开头的地址。
    2017-09-19 09:34:03
    赞同 展开评论
问答分类:
问答地址: