Vb.net 创建HTTP请求时设置请求头

Vb.net 创建HTTP请求时设置请求头,vb.net,visual-studio,Vb.net,Visual Studio,我目前正在尝试使用以下代码创建一个简单的HTTP web请求: Imports System.Net Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try 'Create initial Dim r As HttpWebRequest = HttpWebRequest.Create(txt_Go.Te

我目前正在尝试使用以下代码创建一个简单的HTTP web请求:

Imports System.Net
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Try
        'Create initial 
        Dim r As HttpWebRequest = HttpWebRequest.Create(txt_Go.Text)
        'Create response
        Dim response As HttpWebResponse = r.GetResponse
        Dim responsestream As System.IO.Stream = response.GetResponseStream

        'Create a new stream reader
        Dim streamreader As New System.IO.StreamReader(responsestream)
        Dim data As String = streamreader.ReadToEnd
        streamreader.Close()

        'display data
        txt_response.Text = data
    Catch ex As Exception
        MsgBox("Improper Input")
    End Try
End Sub
End Class
如果Windows窗体包含一个文本框供用户输入API的特定URL,则API将在用户查询后返回结果。我这里的问题是我需要设置一个请求头,其中包含一个键,我不知道如何做到这一点

这是我试图在C#中实现的代码示例,我需要将其转换为能够在VB中使用

using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
static class Program
{
    static void Main()
    {
        MakeRequest();
        Console.WriteLine("Hit ENTER to exit...");
        Console.ReadLine();
    }

    static async void MakeRequest()
    {
        var client = new HttpClient();
        var queryString = HttpUtility.ParseQueryString(string.Empty);

        // Request headers
        client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

        var uri = "https://dev.tescolabs.com/grocery/products/?query={query}&offset={offset}&limit={limit}&" + queryString;

        var response = await client.GetAsync(uri);
    }
 }
}`

在获得响应之前,您可以通过HttpWebRequest的设置设置请求的HTTP头:

'Create initial 
Dim r As HttpWebRequest = HttpWebRequest.Create(txt_Go.Text)

'Set the header(s) here
r.Headers("X-Bans-Header") = "Key"
r.Headers("X-Other-Header") = "Test"

'Create response
'...

谢谢你。但是,当我在设置标题后运行此操作时,我得到一个错误,“exception unhandled”(异常未处理),它将我指向行
Dim response作为HttpWebResponse=r.GetResponse
,我不知道这是为什么。请您发布更多详细信息,比如确切的错误消息,好吗?请使用中的链接复制异常详细信息,并将其粘贴到此处。这似乎是针对您正在交谈的主机的。它会关闭连接。也许你用错误的方式传递密钥,连接到错误的端口,发送错误的地址或其他东西。如果没有关于您的特定主机和请求的进一步信息,这是不可能知道的。要测试头的发送,您可以尝试将自定义头发送到服务,如。@Ban\u F API通常需要
HTTPS
protcol,这意味着
SSL
握手。如果未指定
SSL
协议,则使用
SSL3
TLS1.0
。这将导致事务几乎立即中止(通常基于
TLS1.2
)。其他因素可能会导致连接断开。这些只是您代码中最明显缺少的设置。感谢您的评论。我已经添加了API网站上的C#示例代码,希望您现在能提供帮助。