Не могли бы вы дать мне пример того, как сделать тело запроса JSON на C#. Я использую Visual Studio 2015. Я знаю интерфейс SOAP, но я новичок в C#.Клиент веб-службы POST с использованием C#
Заранее спасибо.
Не могли бы вы дать мне пример того, как сделать тело запроса JSON на C#. Я использую Visual Studio 2015. Я знаю интерфейс SOAP, но я новичок в C#.Клиент веб-службы POST с использованием C#
Заранее спасибо.
Вы можете попробовать следующее
Давайте предположим, что у вас есть следующий WebMethod
public void Webmethod(string parameter)
{
//Do what ever
}
В C# вы будете делать следующее для вызова WebMethod, Вам потребуется Json.NET, Newtonsoft или другой JSon сериалайзер
var webRequest = WebRequest.Create("http:\\www.somesite.com/path/to/webservice/webservice.asmx/Webmethod");
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
Построить объект Json, представляющий параметры
var jsonobjectrepresentingparameters = new {parameter = "Value"};
Получить строку JSON с помощью Newtonsoft JsonConvert
var datastring = Newtonsoft.Json.JsonConvert.SerializeObject(jsonobjectrepresentingparameters);
Получить байт
var bytes = Encoding.ASCII.GetBytes(datastring);
Записать байт запроса
var requestStream = webRequest.GetRequestStream();
requestStream.Write(bytes, 0,bytes.Length);
Получить repsonse
var response = webRequest.GetResponse();
Если WebMethod вернулся что-нибудь как строка, Int или других данных, вы можете использовать следующий класс для десериализации
public class Type<T>
{
public T D { get; set; }
public Type()
{
}
}
Вы заметите, когда вы работаете с веб-сервисов он возвращает объект JSON со свойством D в качестве значения поэтому вам потребуется выше класс в C# Тогда вам потребуются следующие две дополнительные линии, если ваш тип возвращаемого была строка
var json = (new StreamReader(response.GetResponseStream())).ReadToEnd();
var object = JsonConvert.DeserializeObject<Type<string>>(json);
Помните, в будущем, что вам нужно, чтобы дать некоторые примеры кода, что вы пробовали, но видеть мой ответ ниже –