Задача сериализовать класс в json и передать его POST'ом на сервер. Я написал код и он работает но у меня ощущение что я наделал много лишнего. Подскажите хорошую практику для решения моей задачи.
//package - сериализуемый объект который надо передать
JsonPackage package = new JsonPackage( userData );
DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer( typeof( JsonPackage ) );
WebRequest request = WebRequest.Create( "http://localhost:52733/set" );
request.ContentType = "application/json";
request.Method = "POST";
MemoryStream ms = new MemoryStream();
jsonFormatter.WriteObject( ms, package );
ms.Flush();
ms.Position = 0;
StreamReader sr = new StreamReader( ms );
string jsonString = sr.ReadToEnd();
StreamWriter sw = new StreamWriter( request.GetRequestStream() );
sw.Write( jsonString );
sr.Dispose();
sw.Dispose();
ms.Dispose();
request.GetResponse();
Не проверял, но думаю, что ваш код можно сократить до такого:
JsonPackage package = new JsonPackage(userData);
DataContractJsonSerializer jsonFormatter = new DataContractJsonSerializer(typeof(JsonPackage));
WebRequest request = WebRequest.Create("http://localhost:52733/set");
request.ContentType = "application/json";
request.Method = "POST";
using (var stream = request.GetRequestStream())
jsonFormatter.WriteObject(stream, package);
request.GetResponse();
Нет нужды создавать кучу потоков, достаточно взять нужный и сериализовать сразу в него. Ну и, обратите внимание, лучше использовать конструкцию using
- она вызывает Dispose()
в блоке finally
, т.е. поток будет освобожден даже при ошибке.
Добрый деньПытаюсь распарсить XML в Visual Studio, но не получается сделать структуру как это сделано в XML
Нужно в приложении на c# получить ID только что обновлённой записи в MS Access, тк
Проблема с VS 2015Со вчерашнего дня время на выполнение 350 юнит-тестов проекта на моей машине увеличилось с 2 до 40 минут