2016-02-02 3 views
1

Не могли бы вы дать мне пример того, как сделать тело запроса JSON на C#. Я использую Visual Studio 2015. Я знаю интерфейс SOAP, но я новичок в C#.Клиент веб-службы POST с использованием C#

Заранее спасибо.

+0

Помните, в будущем, что вам нужно, чтобы дать некоторые примеры кода, что вы пробовали, но видеть мой ответ ниже –

ответ

1

Вы можете попробовать следующее

Давайте предположим, что у вас есть следующий 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); 
Смежные вопросы