将命令卷曲到 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的主要内容,如果未能解决你的问题,请参考以下文章

Android - 卷曲命令到 Volley 请求

将 SQL 命令从 vb .net 转换为 C#

将字符串从 vb.net 传递到 cmd

VB.NET 或 C#,silverlight 数据网格绑定

如何使用 dotnet cli 命令以 VB.NET 语言创建 ASP.NET Core 项目?

将命令行参数从 VB 传递到 C# WPF 应用程序