Auf die HTTPS-URL über die Konsolenanwendung mit C # @ zugreif
Ich möchte, dass meine Anwendung die angegebene HTTPS-URL erreicht und die CSV-Datei von dieser URL herunterlädt.
Ich habe den folgenden Code:
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Security;
using System.IO;
namespace httpWebRequest_Test
{
class Program
{
static void Main(string[] args)
{
var webAddr = "https://SFTP URL/xyz.csv";
var httpWebRequest = (HttpWebRequest) WebRequest.Create(webAddr);
httpWebRequest.ContentType = "text/csv";
httpWebRequest.Method = "POST";
var httpResponse = (HttpWebResponse) httpWebRequest.GetResponse();
//ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(AcceptAllCertifications);
Stream resStream = httpResponse.GetResponseStream();
}
AcceptAllCertification aac = new AcceptAllCertification();
public static RemoteCertificateValidationCallback AcceptAllCertifications { get; set; }
}
}
AcceptAllCertifications.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace httpWebRequest_Test
{
class AcceptAllCertification
{
public bool AcceptAllCertifications(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certification, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
return true;
}
}
}
Ich erhalte zur Kompilierungszeit keinen Fehler. Zur Laufzeit wird jedoch der folgende Fehler angezeigt:
Die zugrunde liegende Verbindung wurde geschlossen: Konnte keine Vertrauensstellung für den sicheren SSL / TLS-Kanal herstellen.
Wie kann ich diesen Fehler beheben?
Edit 1:
Ich habe versucht, über den Browser auf dieselbe URL zuzugreifen. Der folgende Bildschirm wird angezeigt:
Nur nach dem Hinzufügen einer Ausnahme kann ich fortfahren.
Edit 2:
Nach den folgenden Antworten von @AndrewSilver und @ Übercoder wird der folgende Fehler angezeigt:
Der Remote-Server hat einen Fehler zurückgegeben: (411) Länge Erforderlich
Danach habe ich hinzugefügthttpWebRequest.ContentLength = 0;
, was mich zu folgendem Fehler führte:
Der Remoteserver hat einen Fehler zurückgegeben: (405) Methode nicht zulässig.
Danach habe ich hinzugefügthttpWebRequest.ContentLength = 100;
, was mich zu folgendem Fehler führte:
ProtocolViolationException: Sie müssen einen Anforderungshauptteil angeben, wenn Sie ContentLength> 0 oder SendChunked == true festlegen. Rufen Sie dazu [Begin] GetRequestStream vor [Begin] GetResponse auf.
HINWEIS Jeder, der meine Antwort durch die Bereitstellung einer Lösung verbessertohne die Zertifikatvalidierung zu umgehen wird als akzeptiert markiert.