正文中的 Http Post 字符串值
Posted
技术标签:
【中文标题】正文中的 Http Post 字符串值【英文标题】:Http Post string value in body 【发布时间】:2017-11-24 22:36:12 【问题描述】:Http头的content-type是application/x-www-form-urlencoded
我必须发布一个字符串值。
environmentId: "predevnet"
在我的上一个项目中,我使用 JQuery 进行 ajax 调用:
$.ajax(
headers: this.headers,
type: this.type,
url: this.url,
data: environmentId: "predevnet",
dataType: this.dataType,
contentType: this.contentType,
async: isAsync,
success: success,
cache: this.cache,
error: error
);
现在我正在尝试用 Angular 进行相同的调用
return this.http
.post(this.baseUrl + action, JSON.stringify(environmentId: "predevnet"), options)
.map(response => response.json() as DcResponse<T>);`
预期结果:表单数据应如下所示:Result Expected
无论有没有JSON.stringify
,我得到的结果是这样的:Current results
【问题讨论】:
如果将 Content-Type 标头设置为 application/json 是否有效? 不,我试过了,但它发送了一个 json 对象。它只需要发送带有其名称的变量 你试过用toString()
代替JSON.stringify()
吗?
【参考方案1】:
当你想在 POST 请求的正文中只发送一个键值对作为参数时,你必须省略 key 部分。
因此,如果您希望 content-type 为 application/x-www-form-urlencoded
,那么您的示例必须是这样的:
return this.http
.post(this.baseUrl + action, '=predevnet', options)
.map(response => response.json() as DcResponse<T>);`
否则,如果您更喜欢application/json
,那么您可以写:
return this.http
.post(this.baseUrl + action, '"predevnet"', options)
.map(response => response.json() as DcResponse<T>);`
【讨论】:
以上是关于正文中的 Http Post 字符串值的主要内容,如果未能解决你的问题,请参考以下文章
Alamofire POST 请求,正文中有一个简单的字符串作为参数,标头仍然显示缺少的参数值
Flutter 中的 Base64 字符串 HTTP Post