2016-06-21 7 views
-1

эй, как я могу реплицировать это в коде C#. У меня есть файл уже как byte [] или поток.Загрузить файл - Multiform Data

$ curl https://someaddress.com/ 
-F parameter1='abc123' \ 
-F [email protected] \ 
-F parameter2='abc123' 

[UPDATE]

Я попытался RestSharp, но я получил ответ с кодом состояния 0. На самом деле это не похоже, чтобы отправить запрос даже. { «Базовое соединение закрыто: Непредвиденная ошибка на посылке.»}

var client = new RestClient("https://someaddress.com"); 

RestRequest request = new RestRequest("/",Method.POST); 
request.AddHeader("Content-Type", "multipart/form-data"); 
request.AddHeader("Accept", "application/json"); 

request.AddParameter("parameter1", "abc123"); 
request.AddParameter("parameter2", "abc123"); 

request.AddFile("fileData", fileStream.CopyTo, filename); 
//request.AddFile("fileData", fileByteArray, filename); 

var response= client.Execute(request); 

[ОБНОВЛЕНИЕ 2]

Это StackTrace, что я могу видеть в поле ответа ErrorException.

InnerException = {"Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host."} 
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) 
at System.Net.HttpWebRequest.GetRequestStream() 
at RestSharp.Http.WriteRequestBody(HttpWebRequest webRequest) 
at RestSharp.Http.PostPutInternal(String method) 
+0

Начало размещая то, что вы испробовали уже –

+0

я пытался RestSharp, но это не похоже на работу. я буду обновлять сообщение с кодом – Adam

ответ

0

Я попытался с помощью HttpWebRequest класс или другой проект, но ничего. Я также пытался загрузить и построить проект, но он не работал. Через некоторое время я узнал, что проблема связана с протоколом безопасности. Поэтому я добавил эту строку, и она сработала.

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

0

Да, либо вы можете использовать HttpWebRequest Class (OR) Вы можете использовать RestSharp NuGet Package для того же

+0

Я пробовал RestSharp, но он, похоже, не работает. я буду обновлять сообщение с кодом – Adam

+0

Я пробовал использовать класс HttpWebRequest, но он застрял в request.GetReqeustStream(). Он никогда не выполняет метод requestStream.Write. Stream requestStream = request.GetRequestStream(); requestStream.Write (formData, 0, formData.Length); requestStream.Close(); return request.GetResponse() as HttpWebResponse; Я использовал код здесь http://www.briangrinstead.com/blog/multipart-form-post-in-c – Adam

1

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

https://github.com/restsharp/RestSharp/issues/860