简体   繁体   English

在C Sharp或VB .Net中使用ASANA API在任务中添加附件

[英]Add attachments in a task using ASANA API in C sharp or VB .Net

Did anyone add attachments in a task using ASANA API? 是否有人使用ASANA API在任务中添加附件? I am not getting much resources in C sharp or VB .Net. 我在C Sharp或VB .Net中没有太多资源。 I can Create Task, Fetch tasks, Fetch Users, Fetch Recent Events. 我可以创建任务,获取任务,获取用户,获取近期事件。 But failed to attach any attachment in Task. 但是未能在Task中附加任何附件。 Please help. 请帮忙。

I was using following code: 我正在使用以下代码:

Dim json As String
            Dim bytes As Byte()
            Dim url As String = "https://app.asana.com/api/1.0/tasks/" & TaskID & "/attachments"
            Dim req As HttpWebRequest
            Dim reqStream As Stream
            Dim authInfo As String
            Dim TaskData As New Task

            Try
                authInfo = apiKey & Convert.ToString(":")

                Dim boundary As String = "----------------------------" + DateTime.Now.Ticks.ToString("x")
                Dim formData As NameValueCollection = New NameValueCollection()

                Dim postDataStream As Stream = GetPostStream(FilePath, formData, boundary)
                req = DirectCast(WebRequest.Create(url), HttpWebRequest)
                req.Method = WebRequestMethods.Http.Post
                req.ContentType = "multipart/form-data"
                req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(Encoding.[Default].GetBytes(authInfo)))
                req.ContentLength = postDataStream.Length

                reqStream = req.GetRequestStream()

                ''reqStream.Write(postDataStream, 0, postDataStream.Length)

                postDataStream.Position = 0

                Dim buffer As Byte() = New Byte(1023) {}
                Dim bytesRead As Integer = postDataStream.Length

                While bytesRead <> 0
                    bytesRead = postDataStream.Read(buffer, 0, buffer.Length)
                    reqStream.Write(buffer, 0, bytesRead)
                End While

                postDataStream.Close()

                Dim response As HttpWebResponse = DirectCast(req.GetResponse(), HttpWebResponse)
                Dim res As String = New StreamReader(response.GetResponseStream()).ReadToEnd()
                Console.WriteLine(res)
                Console.ReadLine()

                reqStream.Close()

                Dim finalString As String = res.Remove(0, 8)
                finalString = finalString.Remove((finalString.Length - 1))
                Dim newtask As AsanaObjectId = JsonConvert.DeserializeObject(Of AsanaObjectId)(finalString)


                Return newtask

            Catch ex As WebException
                Dim response As HttpWebResponse = DirectCast(ex.Response, HttpWebResponse)
                Dim resp As String = New StreamReader(ex.Response.GetResponseStream()).ReadToEnd()
                Dim obj As Object = JsonConvert.DeserializeObject(resp)
                Dim messageFromServer As String = CInt(response.StatusCode).ToString & "-" & vbLf & response.StatusDescription & "-" & obj.ToString
                MessageBox.Show(messageFromServer)
                End
            Catch ex As Exception
                MessageBox.Show(ex.Message)
                End
            End Try

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try

When uploading attachments to a task via the Asana API make sure that you are setting the content type of the request to "multipart/form-data" including the actual file's data and not a stream of bytes. 通过Asana API将附件上传到任务时,请确保将请求的内容类型设置为“ multipart / form-data”,包括实际文件的数据而不是字节流。

https://asana.com/developers/api-reference/attachments https://asana.com/developers/api-reference/attachments

Here is an example in C # 这是C#中的示例

using System;
using System.Net;
using System.Text;

class AttachFile
{
    static void Main ()
    {
        Uri uri = new Uri("https://app.asana.com/api/1.0/tasks/<TASK_ID>/attachments");
        string filePath = @"<FILE_PATH>";

        WebClient client = new WebClient();

        string authInfo = "<API_KEY>" + ":";
        authInfo = Convert.ToBase64String(Encoding.Default.GetBytes(authInfo));
        client.Headers["Authorization"] = "Basic " + authInfo;

        client.UploadFile(uri, filePath); 
    }
}

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

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