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

本文关键字:参数 调用 API 何使用 WebClient Web | 更新日期: 2023-09-27 17:59:25

我想通过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);
}

其中CCD_ 1是对象的json表示。这不起作用,我在这篇文章中尝试了查询参数,但返回了未找到的404。

有人能给我举一个WebClient的例子吗?它向POST请求发送两个参数?

注意:我试图避免将两个参数包装在同一个类中,只发送到服务(正如我在这里找到的建议)

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

我建议将参数作为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会让你更容易,因为框架会构造请求的主体,你不必担心串联参数或转义字符。

我通过在地址链接中发送简单参数和作为主体数据的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);
}

Where address需要值参数。