【发布时间】:2017-12-18 11:28:01
【问题描述】:
我在尝试请求 API 时总是收到此错误。 关于api的一些细节:方法是POST,参数也正确(当我在postman上尝试时,没有问题)
这是我的代码:
JavaScriptSerializer js = new JavaScriptSerializer();
using (WebClient client = new WebClient())
{
foreach (var ad in documents)
{
var doc = js.Serialize(ad);
var json = "{\"Message\":\"" + doc + "\"}";
var response =
client.UploadValues("apiUrl", new NameValueCollection()
{
{"json", json}
});
}
}
我读到 UploadValues 默认为 POST。此代码在一个简单的控制台应用程序中调用。知道为什么会出现此错误吗?
【问题讨论】:
-
WebClient和JavaScriptSerializer大部分都已弃用,您应该使用HttpClient和NewtonSoft.Json -
var json = "{\"Message\":\"" + doc + "\"}";Yuk。为什么要手工建造?它只是要求无法捕获的语法错误。您已经在使用序列化程序(尽管已经过时)和 NameValueCollection,那么为什么要在其中随机创建一个字符串呢?无论如何,如果它在 Postman 中有效但在此无效,您应该做的第一件事是使用像 Fiddler 这样的工具来拦截这两个请求,然后找出两个不同软件生成的实际 HTTP 请求之间的差异。跨度> -
感谢您的 cmets,它正在使用此代码!