将命令卷曲到 html 或 vb.net
Posted
技术标签:
【中文标题】将命令卷曲到 html 或 vb.net【英文标题】:Curl command to html or 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 表单中执行此操作?
【问题讨论】:
【参考方案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.以上是关于将命令卷曲到 html 或 vb.net的主要内容,如果未能解决你的问题,请参考以下文章
VB.NET 或 C#,silverlight 数据网格绑定