【问题标题】:Curl command to html or vb.net将命令卷曲到 html 或 vb.net
【发布时间】:2013-01-27 22:59:39
【问题描述】:

我正在尝试访问 smartsheet API。他们在 curl 中提供了一个示例代码来访问它。

要访问您的工作表列表,请使用您喜欢的编程或脚本语言构建一个 HTTPS 请求。下面是一个在 linux 命令行中使用 curl 的示例:

curl https://api.smartsheet.com/1.0/sheets \
-H "Authorization: Bearer 0da6cf0d-848c-4266-9b47-cd32a6151b1f" \
-H "Assume-User: john.doe%40smartsheet.com"

如何在 vb.net 中或从 html 表单中执行此操作?

【问题讨论】:

    标签: html vb.net api curl


    【解决方案1】:

    这是一个相当大的主题,但最简单的你可以试试这个......

    Imports System.Net
    

    然后……

    Dim wHeader As WebHeaderCollection = New WebHeaderCollection()
    
    wHeader.Clear()
    wHeader.Add("Authorization: Bearer 0da6cf0d-848c-4266-9b47-cd32a6151b1f")
    wHeader.Add("Assume-User: john.doe%40smartsheet.com")
    
    Dim sUrl As String = "https://api.smartsheet.com/1.0/sheets"
    
    Dim wRequest As HttpWebRequest = DirectCast(System.Net.HttpWebRequest.Create(sUrl), HttpWebRequest)
    
    'wRequest.ContentType = "application/json" ' I don't know what your content type is
    wRequest.Headers = wHeader
    wRequest.Method = "GET"
    
    Dim wResponse As HttpWebResponse = DirectCast(wRequest.GetResponse(), HttpWebResponse)
    
    Dim sResponse As String = ""
    
    Using srRead As New StreamReader(wResponse.GetResponseStream())
        sResponse = srRead.ReadToEnd()
    End Using
    

    我不熟悉 smartsheet API,但您可以以此为起点。

    如果您使用的是代理,则需要添加...

    Dim wProxy As IWebProxy = WebRequest.GetSystemWebProxy()
    wProxy.Credentials = System.Net.CredentialCache.DefaultCredentials
    

    并在您发出请求时指定代理...

    wRequest.Proxy = wProxy
    

    【讨论】:

    • 谢谢夏兰。当我尝试了您的两个代码时,我收到错误“远程服务器返回错误:(401)未经授权”。这与令牌有关吗?
    • 恐怕您未经授权,即您被拒绝访问。您是否需要在标题和用户中提供密码?再次浏览您的 smartsheet 文档并查看您提供凭据的位置
    • 是的,我自己生成了令牌并提供了我的电子邮件地址。我已经使用了这个文档smartsheet.com/developers/api-documentation#h.3bqgetcbgx89
    • 您是否在防火墙后面并使用网络代理?
    • 实际上我正在尝试连接到生产环境并且我没有授权,我已将其更改为沙箱并且它可以工作。我的错!!!但你真棒..
    【解决方案2】:

    要在 VB.Net 中创建 Web 请求,您可以使用 HttpWebRequest 类。

    curl 中的 -H argument 创建一个额外的标题。要将标头添加到 HttpWebRequest,只需将它们添加到 WebHeaderCollection Headers

    例子:

    Dim myHttpWebRequest = CType(WebRequest.Create("https://api.smartsheet.com/1.0/sheets"), HttpWebRequest)
    myHttpWebRequest.Headers.Add("Authorization: Bearer 0da6cf0d-848c-4266-9b47-cd32a6151b1f")
    myHttpWebRequest.Headers.Add("Assume-User: john.doe%40smartsheet.com")
    Dim myHttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)
    

    【讨论】:

    • 谢谢dominic,当我尝试你的代码时,我得到了错误远程服务器返回错误:(401)未经授权。那会是我的身份验证问题吗?
    • 这也很有效。可悲的是,我只能接受一个作为答案:(,但你很摇滚
    • 不支持 1.0 版。请使用 2.0 版 - 例如.../2.0/sheets.
    猜你喜欢
    • 2018-06-29
    • 2016-03-14
    • 1970-01-01
    • 2016-11-08
    • 2021-10-05
    • 1970-01-01
    • 2021-01-21
    • 2017-04-09
    • 1970-01-01
    相关资源
    最近更新 更多