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

How to send multiple parameters to a Web API call using WebClient

我想通过 POST 请求将两个参数发送到 Web API 服务。当我尝试以下方式时,我目前收到 404 not found,从 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 未找到。

有人可以向我提供一个向 POST 请求发送两个参数的 WebClient 示例吗?

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

我建议将您的参数作为 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 会让您更轻松,因为框架将构建请求的主体,您不必担心连接参数或转义字符。

我通过发送地址 link 中的简单参数和 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);
}

地址需要期望值参数。