【问题标题】:Post request with System.Net.WebClient使用 System.Net.WebClient 发布请求
【发布时间】:2014-06-05 18:41:54
【问题描述】:

我相信答案很简单,但我发现的代码示例都没有工作...... 基本上我正在尝试使用 System.Net.WebClient 发送一个带有字符串参数的发布请求;但是服务器将参数设为空。 它必须用 dotnet 2 编写,所以我不能使用 HttpClient(顺便说一句)。

客户:

        using(var client = new WebClient())
        {
            try
            {
                var res = client.UploadString(_uri, "POST", "test");
                if (res != "test")
                    return false;
            }

            catch (Exception exception)
            {
                  Console.WriteLine(exception.Message);
                  return false;
            }

服务:

            public string Post([FromBody]string value)
            {
                return value;
            }

【问题讨论】:

  • 尝试将内容类型添加到您的请求中:client.Headers.Add("Content-Type","text/plain");。成功了吗?
  • 它没有用。使用时出现内部服务器错误

标签: c# post webclient


【解决方案1】:

尚未测试此代码,但请尝试一下。您可以添加更多标头,如果它引发更多错误,则可能需要更具体的标头。

using (WebClient client = new WebClient())
{
string yourURL = "http://example.com/example.php";
string PARM= "par1=value1&par=value2";
client.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string result= client.UploadString(yourURL, PARM);

if(result != "test"){
return false
}
}

【讨论】:

  • 它没有抛出任何错误,但服务器上仍然有 null 参数..对于其他可能有效的标头有什么想法吗?
  • 您的意思是说您得到的响应字面上是“空”吗?
  • 是的。调试Post([FromBody]string value)函数时,value参数为null
  • 尝试添加:client.Headers.Add("Content-Type","text/html");
  • 我仍然得到相同的结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-04
  • 1970-01-01
  • 2013-07-15
  • 2015-02-16
  • 2013-02-22
  • 2015-05-08
  • 1970-01-01
相关资源
最近更新 更多