如何使用WebClient将多个参数发送到Web API调用

时间:2016-08-01 12:41:12

标签: c# json post webclient

我想通过POST请求将两个参数发送到Web API服务。我正在尝试以下列方式尝试404,因为msdn

public static void PostString (string address)
{
    string data = "param1 = 5 param2 = " + json;
    string method = "POST";
    WebClient client = new WebClient ();
    string reply = client.UploadString (address, method, data);

    Console.WriteLine (reply);
}

其中json是对象的json表示。这没用,我尝试使用this post中的查询参数,但返回了相同的404。

有人可以给我一个WebClient示例,它将两个参数发送给POST请求吗?

注意:我试图避免将两个参数包装在同一个类中,只发送给服务(因为我发现了建议here

2 个答案:

答案 0 :(得分:0)

我建议您将参数作为NameValueCollection发送。

使用NameValueCollection发送参数时,您的代码看起来像这样:

using(WebClient client = new WebClient())
        {
            NameValueCollection requestParameters = new NameValueCollection();
            requestParameters.Add("param1", "5");
            requestParameters.Add("param2", json);
            byte[] response = client.UploadValues("your url here", requestParameters);
            string responseBody = Encoding.UTF8.GetString(response);
        }

使用UploadValues将使您更容易,因为框架将构造请求的主体,您不必担心连接参数或转义字符。

答案 1 :(得分:0)

我设法通过在地址链接中发送simple参数和json作为正文数据来发送json对象和简单值参数:

public static void PostString (string address)
{
    string method = "POST";
    WebClient client = new WebClient ();
    string reply = client.UploadString (address + param1, method, json);

    Console.WriteLine (reply);
}

地址需要期望值参数。