Feverbird Ответов: 0

Конкретная команда curl в C#


- Привет!
Я тут размышлял над одной маленькой проблемой,
у меня есть конкретная команда curl, которую нужно отправить с помощью C#, и мне нужно прочитать ответ от cUrl.

Я хотел бы поделиться командой, которую мне нужно "перевести", и моим решением для нее (которое не работает), и я надеюсь, что, возможно, кто-то сможет помочь мне решить эту проблему, я был бы благодарен за любые чаевые или альтернативы.

Прежде всего, команда cUrl
curl \
-v\
--cacert some_file_i_dont_get\
--cert some_certificate\
--key some_key\
-XPOST\
-H "Content-Type: multipart/form-data"\
-F "file=filepath"\
-F "filename=somefilename"\
SOME_URL

есть несколько вещей, которые я не понимаю, например, команда "F", я не уверен, но я верю, что она определяет имена и значения параметров?

во всяком случае, у меня возникли проблемы с переводом этой команды и особенно с тем, как добавить эти данные в HttpRequest на языке C#

Я собираюсь разместить свой код в разделе" Что вы пробовали", чтобы показать вам свою лучшую догадку

Что я уже пробовал:

   public void MakeHttpsPostRequest()
        {
          
                 //Creating the X.509 certificate. ##########

            // use the TLS protocol 
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;

            // create HTTP web request with proper content type
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("someurl:443");
            request.ContentType = "application/xml;charset=UTF8";

            // grab the PFX as a X.509 certificate from disk
            string certFileName = Path.Combine("PATH TO FILE", "filename.file");

            // load the X.509 certificate and add to the web request
            X509Certificate2 cert = 
new X509Certificate2(certFileName, "(top-secret password)");

                //Set the Timeout.
                request.Timeout = 500;
                //Add certificate to request.
                request.ClientCertificates.Add(cert);
                 request.PreAuthenticate = true; //WUT?
                //UserAgent.
                 request.UserAgent = "My User Agent ?";
                //HTTP verb.
                request.Method = "POST";

            request.ContentType = "multipart/form-data";

              StringBuilder postData = new StringBuilder();
            postData.AppendUrlEncoded("cacert", "file");
            postData.AppendUrlEncoded("cert", "file");
            postData.AppendUrlEncoded("key", "file");
            postData.AppendUrlEncoded("filename", "file.file");
            postData.AppendUrlEncoded("file", "@filefile.file");

            ASCIIEncoding ascii = new ASCIIEncoding();
            byte[] postBytes = ascii.GetBytes(postData.ToString());
            
            request.ContentLength = postBytes.Length;
            Stream postStream = request.GetRequestStream();

            postStream.Write(postBytes,0,postBytes.Length);
           

            postStream.Flush();
            postStream.Close();
                //From HERE: Get HttpWebResponse.
            
}

и расширение AppendUrlEncoded

public static void AppendUrlEncoded(this StringBuilder sb, string name, string value)
       {
           if (sb.Length != 0)
               sb.Append("&");
           sb.Append(HttpUtility.UrlEncode(name));
           sb.Append("=");
           sb.Append(HttpUtility.UrlEncode(value));
       }

0 Ответов