【发布时间】:2019-09-15 03:20:25
【问题描述】:
我希望在 C# 中也可以在 C# 中调用 ApiController,但是在使用 WebClient 实例中的 UploadString 方法上传 Json 时出现错误 415 或 400。
服务器代码是自动生成的调用TestController。该文件正是 Visual Studio 2019 生成它的方式。
[Route("api/[controller]")]
[ApiController]
public class TestController : ControllerBase
{
// GET: api/Test
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// POST: api/Test
[HttpPost]
public void Post([FromBody] string value)
{
}
...
}
客户端代码如下所示:
WebClient client = new WebClient();
client.UploadString("https://localhost:44345/api/Test", "ABC"); // Edit: "ABC" is not a valid JSON
我得到 System.Net.WebException: '远程服务器返回错误:(415) Unsupported Media Type.'
所以谷歌搜索后,大多数建议是 ContentType 没有得到指定,如果我添加
client.Headers[HttpRequestHeader.ContentType] = "application/json";
我得到 System.Net.WebException: '远程服务器返回错误:(400) Bad Request.'
有什么线索吗?
似乎问题与POST/PUT/PATCH有关...如果我执行GET,它正在工作并返回样本数据["value1","value2"]
编辑:我不坚持使用 WebClient.UploadString 方法,但我想要一个不涉及 25 行自定义代码的解决方案......我的意思是我不敢相信你能做到的这么难在 jQuery 中使用单行。
【问题讨论】:
标签: c# json asp.net-core webclient