0

我是一个最业余的 VB 开发人员,并且一直在修补桌面应用程序。然而,当谈到 Web 开发和所谓的“Restful”API 时,我是一个完全的菜鸟(它应该让你平静吗?)

我试图遵循一些关于从体式获取任务信息的帖子背后的逻辑,但老实说,我没有时间研究和弄清楚 Ruby on Rails 只是为了编写网页的后端(我不知道该怎么做)连接到体式以获取一些信息。

我正在寻找可以指导我完成以下步骤的任何人(我真的不介意阅读网络上的重点文章,因此请随时推荐它们,但到目前为止,我已经阅读了太多无法回忆的内容,没有这为我指明了一个有用的方向)

创建新应用程序时,我想:

  • 连接到特定的体式任务
  • 获取任务的具体信息(如标题/标题/注释)

我尝试了以下方法:创建一个带有 webrequest 的应用程序阅读有关 asana API 的示例(restful...但不适合我:))、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

但这只是返回网页的内容

4

1 回答 1

0

(我在 Asana 工作。)你看过Asana API 文档吗?您目前的主要问题是您访问了错误的 URL。所有 API 请求都以:

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

然后根据你想要做什么,你可以在路径中添加一些东西。大多数服务的基于 Web 的访问和 API 访问都有不同的 URL,因为它们的工作方式通常非常不同。

对于简单的 GET 请求,请尝试添加users/me到上面的路径。您的身份验证代码对我来说是正确的,所以我怀疑这将适用于您拥有的代码。

于 2013-05-16T15:44:17.323 回答