【问题标题】:HTTP Post Request in VB.net [duplicate]VB.net 中的 HTTP 发布请求 [重复]
【发布时间】:2018-11-15 14:11:34
【问题描述】:

我一直在尝试从 Visual Basic 发出 Http 发布请求,但每次我遇到异常时,身份验证或标头都没有问题,因为相同的代码在 C# 中工作,我在 VB 中缺少什么。网络让它工作?

这是我尝试过的: [vb]

    Sub test()
    Dim URL As String = "https://myurl.com.do"
    Dim User As String = "user"
    Dim Key As String = "key"
    Dim client As HttpClient = New HttpClient()
    client.BaseAddress = New Uri(URL)
    client.DefaultRequestHeaders.Accept.Add(New MediaTypeWithQualityHeaderValue("application/json"))
    client.DefaultRequestHeaders.Add("Auth1", User)
    client.DefaultRequestHeaders.Add("Auth2", Key)
    client.Timeout = New TimeSpan(0, 0, 160)

    Dim values = New Dictionary(Of String, String) From {
    {"param1", "1.00"},
    {"param2", "0"},
    {"param3", "1.00"},
    {"param4", "349000000"}
    }

    Dim content = New FormUrlEncodedContent(values)


    Try
        Dim response = client.PostAsync(URL, content).Result

        If response.IsSuccessStatusCode Then

            Try
                Dim OB As Object = JsonConvert.DeserializeObject(Of Object)(response.Content.ReadAsStringAsync().Result)

            Catch ex As Exception
                Console.WriteLine("error")
            End Try
        Else
            Console.WriteLine("{0} ({1})", CInt(response.StatusCode), response.ReasonPhrase)
        End If

        Console.ReadKey()
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
End Sub

这是我得到的例外: (第一次尝试捕获异常,在 Dim 响应行):

这是我的工作 C# 代码:

 static void Main(string[] args)
    {
        string URL = "https://myurl.com.do";         

        String User = "user";
        String Key = "key";

        Dictionary<string, string> values = new Dictionary<string, string>();

        values.Add("param1", "1.00");
        values.Add("param2", "0");
        values.Add("param3", "1.00");
        values.Add("param4", "349000000");


        FormUrlEncodedContent content = new FormUrlEncodedContent(values);

        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(URL);
        client.Timeout = new TimeSpan(0, 0, 160);          
        client.DefaultRequestHeaders.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json")  );

        client.DefaultRequestHeaders.Add("Auth1", User);
        client.DefaultRequestHeaders.Add("Auth2", Key);                    

        try
        {

            HttpResponseMessage response = client.PostAsync(URL, content).Result; 
            if (response.IsSuccessStatusCode)
            {                   
                try
                {
                    string b = response.Content.ReadAsStringAsync().Result;
                    Dictionary<string, string> dataObjects = JsonConvert.DeserializeObject<Dictionary<string, string>>(response.Content.ReadAsStringAsync().Result);// response.Content.read
                    object OB = JsonConvert.DeserializeObject<object>(response.Content.ReadAsStringAsync().Result);// response.Content.read               
                }
                catch (Exception)
                {


                }
            }
            else
            {
                Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
            }
            Console.ReadKey();
        }
        catch (Exception ex)
        {
            Console.WriteLine("Error de conexion");
        }
    }

我在 vb.net 中遗漏了什么或做错了什么?

【问题讨论】:

  • 我看不到图像。可以把异常的文字放上去吗?
  • 是否有理由不输入“响应”?你有期权推断吗?您还放弃了对其他变量的显式输入 - 如果您没有 Option Infer On,这些是“对象”。
  • 谢谢大家!只是挖掘内部异常发现了真正的问题,答案在这个链接中:stackoverflow.com/questions/28453353/…

标签: c# vb.net http post http-post


【解决方案1】:

从下一个链接复制粘贴的答案:

Http post error: An existing connection was forcibly closed by the remote host

我认为这是因为您正在连接到“https”网址。在这种情况下,您必须在代码中添加以下行。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

它将接受您的请求的“ssl”协议。 ServicePointManager.ServerCertificateValidationCallback 处理程序只是控制证书的有效性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-19
    • 1970-01-01
    • 2021-02-04
    • 2020-09-26
    • 2012-07-06
    • 1970-01-01
    • 2021-09-23
    • 1970-01-01
    相关资源
    最近更新 更多