我试图弄清楚如何在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();
        }

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

#1楼 票数:1

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

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

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

#2楼 票数:1

我研究了很长时间,发现下面的代码有用且有效。 我可以通过我的应用程序成功将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);
        }

  ask by Ira translate from so

未解决问题?本站智能推荐:

1回复

使用API​​在ASANA中创建任务失败

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

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

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

复制Asana任务/项目

是否可以创建现有Asana任务/项目的副本? 我们设置了一些模板,以在收到新订单时使用。这些模板的想法是,有一个地方来处理所有“文书工作”,其中包括Asana。 最简单的方法是只复制一个模板任务/项目(取决于顺序),然​​后将副本放入正确的团队中。 我找不到用于制作重复项/副本
2回复

在C#中将数据发布到Asana API

我正在尝试使用Asana API更新数据并将数据添加到Asana。 如何在C#中做到这一点? 我得到的数据很好-下面的示例代码: 但是我不知道如何发布数据。 他们文档中的所有示例均使用我没有经验的Python。 我已经联系了Asana,但尚未收到回复。 到目前为止,
1回复

我可以通过其他任何方式来复制Asana项目吗?

这是一篇关于Asana的冗长文章,它是非常“不那么灵活”和“希望保留的东西” API,如果可以用任何其他方式复制项目,那么可以这样做。 首先,我必须声明我喜欢Asana并通过他们的网站进行工作。 因此,除了他们的API之外,我不反对它或对此有任何争执。 如果您还没有,请尝试一下,除非您
3回复

如何使用c#连接Asana Rest API?

有没有人使用c#连接到Asana API的代码片段? 他们的网站上有一个Hello World应用程序,但不幸的是它是用ruby编写的。 https://asana.com/developers/documentation/examples-tutorials/hello-world
1回复

C#中的AsanaNet错误

我无法从C#使用AsanaNet。 当实例化一个新的Asana实例时,我无法传递errorCallback。 我得到的错误是“当前上下文中不存在errorCallback”。 下面是我的代码。
1回复

Asana:401:未授权放置请求,但未授权获取请求

我正在开发UWP应用,以便快速了解有关asana的任务并进行一些时间管理。 但是,在使一切正常的同时,我无法更新任何任务。 设置如下:在导航到OAuth重定向URL的情况下,我通过截获导航事件来通过WebView-Element(托管的Web浏览器)获得oauth令牌。 我对其余服