Angular 角度HttpClient:Post方法未正确设置参数
在我的方法transmitProjectproject:ProjectModel:Observable中有一个post请求,可通过HttpClient将数据发布到后端: -在我的transmitProject方法中 。。。直到这里一切都很好。但是请求将post数据设置为json格式。要测试后端服务器,请返回转储的$\u POST变量->null 请求有效负载: {projectId:…,description:…,经度:10,纬度:10,…} 实际上应该是: projectId=…description=…经度=10纬度=10Angular 角度HttpClient:Post方法未正确设置参数,angular,ionic-framework,rxjs,httpclient,Angular,Ionic Framework,Rxjs,Httpclient,在我的方法transmitProjectproject:ProjectModel:Observable中有一个post请求,可通过HttpClient将数据发布到后端: -在我的transmitProject方法中 。。。直到这里一切都很好。但是请求将post数据设置为json格式。要测试后端服务器,请返回转储的$\u POST变量->null 请求有效负载: {projectId:…,description:…,经度:10,纬度:10,…} 实际上应该是: projectId=…descrip
->在《邮递员》中,一切都很好。这并不明显,但您没有以正确的方式使用httpClient 您可以在中找到对这种情况的解释 如果您不想使用JSON,但想坚持使用x-www-form编码,那么您的代码应该如下所示: const body=新的HttpParams .设置“您的属性名称”,**属性值** 设置 返回this.http.posthis.conf.url, body.toString, { 标题:新的HttpHeaders .set'Content-Type','application/x-www-form-urlencoded' } 管与您已有的代码相同。。。;
这里的问题是Angular默认发送JSON类型的post请求 您可以更改PHP后端并使用$\u POST读取JSON: 或者如果您真的想以x-www-form-urlencoded的形式发送 您可以使用URLSearchParams自动将内容类型设置为application/x-www-form-urlencoded: let body=新的URLSearchParams; 设置“用户名”,用户名; 设置“密码”,密码; this.http.posthis.loginUrl,body.map。。。; 当然,如果你像这样正确编码你的身体,你也可以手动完成
let body = `username=${username}&password=${password}`;
但是您必须手动将标题设置为application/x-www-form-urlencoded
像这样
this.http.post(this.loginUrl, body, { headers: headers }).map(...);
请尝试使用JSON.stringifyprams,您可以使用JSON传输数据。你想把它们编码成表格吗?谢谢你,麦克。你的方法是正确的吗?或者有更好的方法吗?我认为坚持使用JSON更自然,因为它现在是广泛使用的标准。所以,如果您不需要x-www-form,就让Angular标准库在内容类型为application/json时发挥作用。这样,接收端就知道如何解码有效负载JSON.decode或类似内容,具体取决于语言。查看HttpClient上的Angular文档,了解示例:Hi xzesstence,谢谢。你能推荐一个更好的方法吗?这样看来,这听起来像是一个大杂烩。最先进的技术是什么?因为您使用的是angular,我建议使用json并更改后端,正如我前面所说的,它简单易用。如果它有帮助,我非常感谢你把它标记为答案。如果你还有其他问题,只要问:干杯你们两个都帮了我。无法通过标记来决定:-@xzesstence查看您的活动页面,我发现您有一系列的反对票。我认为你正被一个用户锁定。您可以标记此答案,选择需要主持人干预的选项,并描述您的问题。
this.http.post(this.loginUrl, body, { headers: headers }).map(...);