2017-05-30 5 views
0

Ich möchte eine Post-Anfrage von der Serverseite an einen anderen Server senden. Ich möchte einige Formulardaten im Code erstellen (ohne eine Webseite zu verwenden) und sie senden.Senden einer Post-Anfrage mit VB.Net

Von dem, was ich online gelesen habe, habe ich mit dem folgenden Code endete. Ich bin jedoch nur raten und nicht sicher, ob es richtig ist, vor allem, weil ich es nicht zur Arbeit bekommen kann (die Ausnahme, die ich bekomme, wurde als Kommentar in den Code aufgenommen). Ist das ein Fehler meinerseits oder ist es ein externes Problem, mit dem ich die Anfrage absende?

Dim client = New HttpClient 

Dim request = WebRequest.CreateHttp("https://something.com/test") 
request.Credentials = CredentialCache.DefaultCredentials 
request.UserAgent = "value" 
request.Method = HttpMethod.Post.Method 
request.ContentType = "application/x-www-form-urlencoded" 

Dim params = New Dictionary(Of String, String) 
params.Add("key1", "value1") 
params.Add("key2", "value2") 
params.Add("key3", "value3") 
params.Add("key4", "value4") 

Dim stream = request.GetRequestStream() 
Dim content = New FormUrlEncodedContent(params) 
content.CopyToAsync(stream) 

' Exception occurs when executing the line below:   
' The underlying connection was closed: An unexpected error occurred on a send. 
' InnerException = {"Unable to read data from the transport connection: 
' An existing connection was forcibly closed by the remote host."} 

Dim result = request.GetResponseAsync().Result   

Console.WriteLine(result.ToString) 

Antwort

0

Sind Sie sicher, dass der Server ein gültiges https-Zertifikat hat?

  1. Die cert an den URI ausgestellt wurde, die Sie
  2. Die cert schlagen ist nicht abgelaufen
  3. Die cert von einer vertrauenswürdigen Stelle ausgestellt wurde (zB Verisign)

Von diesen Kriterien # 3 ist die am häufigsten fehlgeschlagene Prüfung. Sie können einige oder alle dieser Fehler (auf eigenes Risiko) ignorieren. Hier ist ein Beispiel, wie man das macht. (Referenz: https://stackoverflow.com/a/10390388/8081260)

Auch wäre es hilfreich sein, die volle (innere) Ausnahme

+0

Okay, danke zu liefern. Das war die innere Ausnahme (im Code-Kommentar). Es ist sehr einfach. Der Stacktrace zeigt mehr, aber ich denke, dass Sie richtig sind, dass die URL ein Problem verursacht, möglicherweise auf der anderen Serverseite (z. B. ein Firewall-Problem). Ich war hauptsächlich besorgt, dass es mein Problem sein könnte, weil ich HttpClient/WebRequest nie benutzt habe. – Mayron

Verwandte Themen