我在Azure中托管了一个非常简单的.NET Web API,它有两种非常简单的方法:
[EnableCors(origins: "http://simpleapiearl.azurewebsites.net", headers: "*", methods: "*")]
public class EnvelopesController : ApiController {
// GET: api/Envelopes
public IEnumerable<string> Get() {
return new string[] { "value1", "value2" };
}
// POST: api/Envelopes
public string Post([FromBody]Envelope env) {
return "rval: " + env + " (and my addition to env)";
}
}
我创建了一个简单的插件来调用这些方法。在我的AngularJS代码中,我进行了两个非常简单的$
http调用。GET工作正常。但是,POST始终返回“ 400(错误请求)”,然后在WebStorm控制台中不久显示“
XMLHttpRequestion无法加载…无效的HTTP状态代码400”。
任何和所有建议表示赞赏!
编辑!!
您好,感谢您的快速回复。我只是意识到我忘了添加一些非常相关的细节。
我的POST方法的参数就是所谓的Envelope对象,其中包含两个属性:listingId (int)
和Description (string)
。当我添加urlencoded Content-Type标头,并'{"listingId":1234, "Description":"some description"}'
作为POST数据传递时,服务器上POST方法中的env参数为NULL(也就是说,它似乎无法解析我提供的JSON)。抱歉,原始帖子中省略了此内容。
我认为这篇文章会有所帮助。
如何在AngularJS中使用$
http发布urlencode表单数据?
默认情况下,$ http服务将通过将数据序列化为JSON然后使用内容类型“ application /
json”将其发布来转换外发请求。当我们想将值作为FORM发布时,我们需要更改序列化算法并使用内容类型“ application / x-www-
form-urlencoded”发布数据。
这是您的修改后的plnkr。您的代码缺少将JSON转换为编码URL的转换。
http://plnkr.co/edit/4aeEDz73qgHSfOv1sBgn?p=preview
$http({
method: 'POST',
url: 'http://simpleApiEarl.azurewebsites.net/api/envelopes',
data: env,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest: function(obj) {
var str = [];
for(var p in obj)
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
return str.join("&");
}
}).
问题内容: 我有一段这样的代码 当我输入的查询超过一个词,例如“狗”时,出现以下错误。 谁能指出我做错了什么?提前致谢。 问题答案: “狗”返回400错误的原因是因为您没有转义URL的字符串。 如果您这样做: 会的。 但是,我强烈建议您使用请求,而不要使用urllib / urllib2 / httplib。这要容易得多,它将为您处理所有这一切。 这是与python请求相同的代码:
如果字段根本不存在,是否应将其视为?
我正在尝试使用Ajax进行REST调用(POST)。这是我的AJAX代码 最初,我得到了这个错误:XMLHttpRequest无法加载http://localhost:port/service/myservice。对preflight请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此不允许访问源“null”。响应的HTTP状态代码为4
我试图在中发送格式的请求。 我尝试了很多来自internet和StackOverflow的代码,但都不起作用。
我正在尝试登录一个网站(https://dashboard.ngrok.com/user/login)使用jsoup。我对GET请求没有任何问题,但当我尝试使用凭证执行POST请求时,我收到: HTTP错误获取URL。状态=400 我尝试为请求设置一个更好的头,使用我在连接发出POST请求时发送的相同参数。 我也尝试过这种类型的请求: 结果显示: 线程“main”组织中出现异常。jsoup。Htt
代码- 即使db实例存在,它也会为某些调用抛出错误。错误详细信息- 你能告诉我我在这里缺了什么吗? 错误含义-