【问题标题】:How to send multiple parameters to a Web API call using WebClient如何使用 WebClient 将多个参数发送到 Web API 调用
【发布时间】:2016-08-01 12:41:11
【问题描述】:

我想通过 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 示例?

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

【问题讨论】:

  • 您似乎正在尝试将 url 编码参数与字符串化 json 对象结合起来。那是行不通的。
  • @mituw16 是的,我尝试将 url 编码参数与字符串化 json 结合起来,但没有成功,但我该如何实现呢?
  • 您需要拥有所有字符串化的 JSON 或拥有所有 url 编码的参数。
  • @meJustAndrew,显示目标 Web api 端点。

标签: c# json post webclient


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    通过在地址链接中发送简单参数并将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);
    }
    

    其中地址需要期待value参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多