我有以下控制器我正在尝试使用Curl来测试它。问题是,financialId总是为null,而不是从curl读取我的帖子。
Controler:
[Route("api/token")]
public class TokenController : Controller
{
[HttpPost("changefiscal")]
[Authorize]
public async Task<ActionResult> ChangeFiscal([FromBody] long fiscalId)
{
//fiscalId is always 0
}
}
我检查了文档here,该文档说使用-d参数并将其作为json对象发布。不幸的是那不起作用
curl -d'{“key1”:“value1”,“key2”:“value2”}' - H“Content-Type:application / json”-X POST http://localhost:3000/data
我试过了
curl -d "fiscalId=21875" -H "Content-Type: application/json" -H "Authorization: Bearer XXX" -X POST -i http://localhost:5000/api/token/changefiscal
和
curl -d "{"fiscalId":"21875"}" -H "Content-Type: application/json" -H "Authorization: Bearer XXX" -X POST -i http://localhost:5000/api/token/changefiscal
和
curl -d "{"fiscalId":"21875"}" -H "Content-Type: application/json" -H "Authorization: Bearer XXX" -X POST -i http://localhost:5000/api/token/changefiscal
和
curl -d "{\"fiscalId\":\"21875\"}" -H "Content-Type: application/json" -H "Authorization: Bearer XXX" -X POST -i http://localhost:5000/api/token/changefiscal
以及我能想到的其他一切
我可以在日志中看到它似乎正在发送它
- 重建网址为:POST /
- 不支持名称查找超时
- getaddrinfo(3)POST失败:80
- 无法解析主机'POST'
- 关闭连接0卷曲:(6)无法解析主机'POST'
- 不支持名称查找超时
- 尝试:: 1 ...
- TCP_NODELAY设置
- 尝试127.0.0.1 ...
- TCP_NODELAY设置
- 连接到localhost(127.0.0.1)端口5000(#1)
POST / api / token / changefiscal HTTP / 1.1 主持人:localhost:5000 User-Agent:curl / 7.53.1 接受: / Content-Type:application / json 授权:承载eyJhbGciOiJSUzI1NiIsImtpZCI6IjI2OTAzNzc0NjYyNzc4RDM1MzE2QUUwQUU1MjIyQUU1REIzM0M0NUEiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJKcEEzZEdZbmVOTlRGcTRLNVNJcTVkc3p4Rm8ifQ.eyJuYmYiOjE1MTA1NjcxNzMsImV4cCI6MTUxMDU3MDc3MywiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo1MDAwIiwiYXVkIjpbImh0dHA6Ly9sb2NhbGhvc3Q6NTAwMC9yZXNvdXJjZXMiLCJ0ZXN0YXBpIl0sImNsaWVudF9pZCI6IlNlcnZpY2VBY2NvdW50QWNjZXNzIiwic3ViIjoiMjEyNDg1ODIiLCJhdXRoX3RpbWUiOjE1MTA1NjcxNzMsImlkcCI6ImxvY2FsIiwibmFtZSI6ImxpbGF3IiwiZS1tYWlsIjoibGlsYXdAZWcuZGsiLCJzY29wZSI6WyJvcGVuaWQiLCJwcm9maWxlIiwidGVzdGFwaSJdLCJhbXIiOlsicGFzc3dvcmQiXX0.Q_oJ-xOIKdTtGoRqJbtNjwLV82cQQLhJUVl2Ey-4riZdp45rPIrmfOw9VdknUOLpm8RYZ0iLFC31gCpn1vKb4zLiTmBuTuzYsKxnAvf-UkCj1L8soH4W2lCvx560bZeS7B67tJ4nK9t36OiMLQY4m-_NRTSRBs5QtsXBd5VQGPsTpxf_MxVbQm6Hj6Ot3FGRIa08gmwD3iEr9vsCU6732InbGzU26wtm-WLWp_A_k66Z29G8ms_U8x6gg-aOlQG9_0v_DEjTXCkKNcgWoL0IvaCC0psiYkdIjQxaOwz-e_fcqXpKEFmuoSqmGd1l-eMl3HimOomdOHwqploWGxnJ4Q 内容长度:7
- 上传已完全发送:7个字节中的7个
然而,当我检查fiscalId时,它总是0,我甚至试图将fiscalId更改为字符串,它只是null。
答案 0 :(得分:2)
当您将数据作为JSON对象发布时,如-d '{"fiscalId": 21875}'
,您的操作方法应该期望一些具有相应属性的简单类。在你的情况下:
public class Dto
{
public long fiscalId {get; set;}
}
和
public async Task<ActionResult> ChangeFiscal([FromBody] Dto data)
答案 1 :(得分:0)
最后经过一个多小时的玩法后,我得到了它,即使内容类型是json,它只是作为字符串"'21875'"
发送,即使所有文档显示将其发送为JSon。由于某种原因,API无法将其作为JSon对象读取,但希望它只是作为字符串发送。
curl POST -v -d "'21875'" -H "Content-Type: application/json" -H "Authorization: Bearer XXX" http://localhost:5000/api/token/changefiscal