使用C#的POST Web服务客户端

时间:2016-02-02 07:47:10

标签: c# web-services webservice-client

请举例说明如何在C#中创建JSON请求体。我正在使用Visual Studio 2015.我知道SOAP UI,但我是C#的新手。

提前致谢。

1 个答案:

答案 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"};

使用Newtonsoft JsonConvert获取Json字符串

var datastring = Newtonsoft.Json.JsonConvert.SerializeObject(jsonobjectrepresentingparameters);

获取字节

var bytes = Encoding.ASCII.GetBytes(datastring);

将字节写入请求

var requestStream = webRequest.GetRequestStream();
requestStream.Write(bytes, 0,bytes.Length);

获取回复

var response = webRequest.GetResponse();

如果您的Webmethod返回类似字符串,int或其他数据的内容,您可以使用以下类来反序列化

public class Type<T>
{
    public T D { get; set; }
    public Type()
    {

    }
}

当你使用webservices时,你会注意到它返回一个带有属性d的json对象作为值,这就是你在C#中需要上面的类的原因 如果您的返回类型是字符串

,那么您将需要以下额外的两行
var json = (new StreamReader(response.GetResponseStream())).ReadToEnd();
var object = JsonConvert.DeserializeObject<Type<string>>(json);