CURL - двоичные данные в C # HttpWebrequest - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть запрос curl, который я хочу преобразовать в код C #.Я просто не уверен, что эквивалентно " - двоичный файл данных " в HttpWebRequest.

curl -s -H "Content-Type:application/xml" -X POST --data-binary @C:\path\to\file.xml "https://somerestURL?create"

Пока ниже мой код:

var xmlFile = "C:\\path\\to\\file.xml";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
NetworkCredential cred = new NetworkCredential(uname, cipher);
CredentialCache cache = new CredentialCache { { url, "Basic", cred } };
request.PreAuthenticate = true;
request.Credentials = cache;
request.Method = "POST";
request.ContentType = "application/xml";

Я могу предоставить информацию, если вам нужно больше.Спасибо.

1 Ответ

0 голосов
/ 12 сентября 2018

Я сосредоточился на поиске преобразования / эквивалента кода curl в c #, но мне это не повезло. Итак, я исследовал XML POSTING и ниже мой рабочий код.

        // initiate xml 
        XmlDocument xml = new XmlDocument();
        xml.Load(xmlFile);
        byte[] bytes = Encoding.ASCII.GetBytes(xml.InnerXml);

        // setup request
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        NetworkCredential cred = new NetworkCredential(uname, cipher);
        CredentialCache cache = new CredentialCache { { url, "Basic", cred } };
        request.PreAuthenticate = true;
        request.Credentials = cache;
        request.Method = "POST";
        request.ContentType = "application/xml; encoding='utf-8'";
        request.ContentLength = bytes.Length;

        // stream
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(bytes, 0, bytes.Length);
        requestStream.Close();

        // response        
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();
        Stream responseStream = response.GetResponseStream();
        StreamReader readStream = new StreamReader(responseStream, Encoding.Default);
        var xmlResponse = readStream.ReadToEnd();

Я получил свою идею из этого поста и немного изменил ее в зависимости от моих требований: HTTP-публикация XML-данных в C #

...