2017-05-30 2 views
0

Je souhaite envoyer une demande de publication du serveur vers un autre serveur. Je veux créer des données de formulaire dans le code (ne pas utiliser une page Web) et l'envoyer.Envoi d'une demande de publication à l'aide de VB.Net

D'après ce que j'ai lu en ligne, j'ai fini avec le code ci-dessous. Cependant, je devine juste et je ne sais pas si c'est correct, surtout parce que je ne peux pas le faire fonctionner (l'exception que je reçois a été incluse comme un commentaire dans le code). Est-ce une faute de ma part ou est-ce un problème externe à voir avec l'endroit où j'envoie la demande?

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) 

Répondre

0

Etes-vous sûr que le serveur dispose d'un certificat https valide?

  1. Le Cert a été délivré à l'URI que vous frappiez
  2. Le Cert n'a pas expiré
  3. Le Cert a été émis par une autorité de confiance (par exemple: Verisign)

de ces critères , # 3 est le chèque le plus souvent échoué. Vous pouvez ignorer par programme toutes ces erreurs (à vos risques et périls). Voici un exemple sur la façon de le faire. (Référence: https://stackoverflow.com/a/10390388/8081260)

En outre, il serait utile de fournir la totalité (intérieure) exception

+0

merci D'accord. C'était l'exception interne (dans le commentaire de code). C'est très basique. Le stacktrace montre plus mais je pense que vous avez raison que l'URL cause un problème, peut-être du côté de l'autre serveur (tel qu'un problème de pare-feu). J'étais surtout inquiet que cela puisse être mon problème parce que je n'ai jamais utilisé HttpClient/WebRequest. – Mayron