繁体   English   中英

使用C#中的API将任务发布到Asana

Posting tasks to Asana using API in C#

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我试图弄清楚如何在asana中向用户发布新任务,但我不断收到400错误代码。 谁能告诉我我在做什么错。

这是我到目前为止的内容:

        string apiKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        string ID = "xxxxxxxxxxxxx";
        string url = @"https://app.asana.com/api/1.0/tasks";

        Data dat = new Data();
        dat.workspace = ID;
        dat.name = "Buy eggs";
        dat.notes = "Testing";
        string json = JsonConvert.SerializeObject(dat);
        string data ="\"data\": " + json;

        byte[] bytes = Encoding.UTF8.GetBytes(data);
        var req = (HttpWebRequest)WebRequest.Create(url);
        Console.WriteLine(bytes.ToString());
        req.Method = WebRequestMethods.Http.Post; 
        req.ContentLength = bytes.Length;
        req.ContentType = "application/json";

        var authInfo = apiKey + ":";
        var encodedAuthInfo = Convert.ToBase64String(
            Encoding.Default.GetBytes(authInfo));
        req.Headers.Add("Authorization", "Basic " + encodedAuthInfo);

        req.ContentLength = bytes.Length;
        Stream reqStream = req.GetRequestStream();
        reqStream.Write(bytes, 0, bytes.Length);
        reqStream.Close();

        try
        {
            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
            string res = new StreamReader(response.GetResponseStream()).ReadToEnd();
            Console.WriteLine(res);
            Console.ReadLine();
        }
        catch (WebException ex)
        {
            HttpWebResponse response = ((HttpWebResponse)ex.Response);
            string e = url + " caused a " + (int)response.StatusCode + " error.\n" + response.StatusDescription;
            Console.WriteLine(e);
            Console.ReadLine();
        }

我放了串行转换器,我做错了吗?

2 个回复

正如第一个评论所指出的,您需要正确地序列化数据。 发布的最终正文应类似于:

{ "data": { "name": "My Example Task", ... }}

(当然,用...替换为更多字段。)

我研究了很长时间,发现下面的代码有用且有效。 我可以通过我的应用程序成功将Task发布到Asana。 我已经将Json序列化器用于点网。 感谢Newtonsoft.Json。

        string json = null;
        byte[] bytes = null;
        string url = "https://app.asana.com/api/1.0/tasks";
        HttpWebRequest req = default(HttpWebRequest);
        Stream reqStream = default(Stream);
        string authInfo = null;
        Task TaskData = new Task();

        try
        {
            authInfo = apiKey + Convert.ToString(":");

            TaskData.workspace = WorkspaceId;
            TaskData.name = TaskName;
            TaskData.notes = TaskNotes;

            json = JsonConvert.SerializeObject(TaskData);
            json = json.Insert((json.Length - 1), ",\"projects\":[" + ProjectId + "]");
            json = Convert.ToString("{ \"data\":") + json + "}";

            bytes = Encoding.UTF8.GetBytes(json);

            req = (HttpWebRequest)WebRequest.Create(url);
            req.Method = WebRequestMethods.Http.Post;
            req.ContentType = "application/json";
            req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes(authInfo)));
            req.ContentLength = bytes.Length;

            reqStream = req.GetRequestStream();
            reqStream.Write(bytes, 0, bytes.Length);
            reqStream.Close();


            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
            string res = new StreamReader(response.GetResponseStream()).ReadToEnd();
            Console.WriteLine(res);
            Console.ReadLine();

            string finalString = res.Remove(0, 8);
            finalString = finalString.Remove((finalString.Length - 1));
            AsanaObjectId newtask = JsonConvert.DeserializeObject<AsanaObjectId>(finalString);

            return newtask;

        }
        catch (WebException ex)
        {
            HttpWebResponse response = (HttpWebResponse)ex.Response;
            string resp = new StreamReader(ex.Response.GetResponseStream()).ReadToEnd();
            MessageBox.Show(resp);
            System.Environment.Exit(0);
        }
1 使用API​​在ASANA中创建任务失败

我正在尝试创建一个任务,并使用c#在ASANA中将其分配给我。 以下是我发送给ASANA的JSON请求 {“数据”:[{“受让人”:“ aaaa@bbb.com”,“名称”:“ API测试”,“注释”:“我正在测试ASANA API”,“工作区”:{“ id”:1234569789512 ...

2014-10-24 21:15:38 1 351   c#/ asana
2 使用获取发布Asana任务

我在学习React和Redux时尝试使用Asana API。 到目前为止,我已经可以使用fetch()从Asana API中获取数据,但是我在发布任务时遇到了麻烦。 这是我正在使用的代码: const options = (type, data) =&gt; { cons ...

3 通过API将任务发布到Asana停止工作

我编写了一个程序,通过API将任务发布到asana,并且一直工作到今天早上,有人可以帮我找出原因吗? 这是我发送的JSON字符串的示例: {"workspace":09876543321111,"data": {"assignee":null,"name":"Sample Name", ...

5 在ASANA上使用API​​在项目中创建任务

使用ASANA API,我找不到创建附加到项目的未分配任务的方法。 例如:我想创建一个任务“添加此功能”到工作区“ 12345678”,并将其添加到项目“ 456789”,而没有受让人。 有什么帮助吗? 谢谢! ...

2012-05-07 21:39:13 1 1362   asana
6 使用Asana事件API进行任务监控

我正在尝试使用Asana事件API来跟踪我们的项目之一中的更改,更具体地讲讲各部分之间的任务移动。 我们的工作流程如下: 我们有一个项目,分为几个部分。 每个部分代表过程中的一个步骤。 完成一个步骤后,任务将移至下面的部分。 当给定任务到达特定步骤时,我们要将其传递 ...

7 如何通过API查询Asana中的归档任务

我有兴趣从Asana导出数据,因此我们可以运行报告。 为此,我需要获取所有任务的列表,包括那些已归档的任务。 我对列出任务的API的理解是,如果任务已归档,则在获取项目任务时将无法检索该任务。 有没有办法查询所有任务,无论它们是否已存档? ...

2012-06-20 22:38:52 2 869   asana
9 您如何从API获取Asana任务的“作者”?

尝试确定谁从API创建了Asana任务,但是: 任务本身没有作者字段。 无法使用关注者,因为创建者可以将自己从关注者中删除。 查看任务的故事,没有创建系统事件。 我发现最好的方法是使用任务的第一个(最老的)故事的created_by字段。 有更好的选择吗? ...

10 在Asana中创建任务

嗨,大家好我正在尝试使用Asana Api创建任务,但不知何故出现了错误。 我用来创建任务的json是 但是每当我尝试发布相同的内容时,上面的json都会出现错误“ message”:“ Invalid field” ...

2012-07-17 08:55:32 1 517   asana
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM