2013-05-16 20 views
0

我是一個最懶的VB開發人員,並且一直在修改桌面應用程序一段時間。 Hoever我是一個總noob當涉及到網絡開發和'Restful'API的東西(它是否應該讓你冷靜?)使用webrequests連接到asana

我試圖按照邏輯背後的一些職位獲取任務信息從asana,但老實說,我沒有時間研究和弄清楚Ruby on Rails,所以我可以寫一個網頁的後端(我不知道該怎麼辦)連接到asana來獲取一些信息回來。

我要找的人,可以引導我通過以下步驟(我真的不介意閱讀重點從網絡物品可以隨意推薦他們,但截止到這一點,我已經閱讀太多在這裏回顧,沒有任何東西都指向我一個有益的方向)

當創建一個新的應用程序,我想:

  • 連接到特定的體位任務
  • 獲取特定informati對任務(如標頭/標題/評論)

我曾嘗試以下: 用WebRequest的創建應用 閱讀體式API例子(寧靜......但不適合我: )),rubygems,JSON,PHP等,但這是不切實際的,因爲它只是很多信息... 所以我真的很想知道,並且非常感謝它,如果有一個VB開發人員(或c#),可以發佈如何實現這個簡單的示例

一旦我得到一個請求工作,我可以做其餘的。我只需要知道如何/哪裏開始

你的意見是非常讚賞

這是我使用的時刻代碼:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim response As String = GetResponse("https://app.asana.com/0/taskIDhere") 
     MsgBox(response) 
End Sub 

Public Function GetResponse(uri As String, Optional data As String = "", Optional method As String = "GET") As String 
     System.Diagnostics.Trace.WriteLine(uri) 

     ' create request 
     Dim request As HttpWebRequest = DirectCast(WebRequest.Create(uri), HttpWebRequest) 
     request.PreAuthenticate = True 
     request.Method = method 
     request.ContentType = "application/x-www-form-urlencoded" 

     ' log in 
     Dim authInfo As String = API_KEY & ":" & "" 
     ' blank password 
     authInfo = Convert.ToBase64String(Encoding.[Default].GetBytes(authInfo)) 
     request.Headers("Authorization") = "Basic " & authInfo 

     ' send data 
     If data <> "" Then 
      Dim paramBytes As Byte() = Encoding.ASCII.GetBytes(data) 
      request.ContentLength = paramBytes.Length 
      Dim reqStream As Stream = request.GetRequestStream() 
      reqStream.Write(paramBytes, 0, paramBytes.Length) 
      reqStream.Close() 
     End If 

     ' get response 
     Try 
      Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse) 
      Return New StreamReader(response.GetResponseStream()).ReadToEnd() 
     Catch ex As WebException 
      Dim response As HttpWebResponse = DirectCast(ex.Response, HttpWebResponse) 
      Throw New Exception((uri & " caused a " & CInt(response.StatusCode) & " error." & vbLf) + response.StatusDescription) 
     End Try 
    End Function 

但這只是返回的內容的網頁

+0

好吧,看起來上面的代碼是正確的。我對反饋的解釋是錯誤的。 現在我只需要弄清楚如何獲得任務Id的:) –

回答

0

(我在Asana工作。)你看過Asana API documentation的任何一個嗎?您目前的主要問題是您訪問的URL錯誤。所有的API請求開始:

https://app.asana.com/api/1.0/

然後取決於你想要做什麼,你可以添加東西的路徑。大多數服務對於基於Web的訪問和API訪問都有不同的URL,因爲它們的工作方式往往截然不同。

要獲得簡單的GET請求,請嘗試將users/me添加到上面的路徑中。您的驗證碼對我來說看起來是正確的,所以我懷疑這可以與您的代碼一起使用。

+0

嗨,謝謝我看到了,並且從此能夠很好地連接!但是,當我嘗試使用格式https://app.asana.com/api/1.0/workspaces/workspaceid/tasks -d「name =這是一項新任務」創建任務時,出現錯誤..請參閱此帖子http ://堆棧溢出。COM /問題/ 16609415/URL-返回錯誤 –