您好我使用post命令发送jSon文件有问题。 我在Windows上使用版本7.54.0中的curl。 我试图执行命令:
E:\Pobrane Na Big Data\cURL\curl-7.54.0-win64-mingw\bin>curl -v -X POST
http://my.host.ip: 8083/api/kpi -H "content-type: application/json" -d
@R.txt
我得到回应:
Note: Unnecessary use of -X or --request, POST is already inferred.
* Trying my.host.ip...
* TCP_NODELAY set
* Connected to my.host.ip (my.host.ip: 8083) port 8083 (#0)
> POST /api/kpi HTTP/1.1
> Host: my.host.ip: 8083
> User-Agent: curl/7.54.0
> Accept: */*
> content-type: application/json
> Content-Length: 1398862
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
* We are completely uploaded and fine
< HTTP/1.1 200 OK
< Cache-Control: no-cache
< Pragma: no-cache
< Content-Type: application/json; charset=utf-8
< Expires: -1
< Server: Microsoft-IIS/8.5
< X-AspNet-Version: 4.0.30319
< X-Powered-By: ASP.NET
< Date: Wed, 05 Jul 2017 09:26:11 GMT
< Content-Length: 193
<
{"StatusCode":400,"StatusDescription":"System.NullReferenceException: Object ref
erence not set to an instance of an object.\r\n at KPI.WebApi.Controllers.KpiC
ontroller.<Post>d__2.MoveNext()"}* Connection #0 to host 10.23.2.124 left intact
我想补充的是,当我试图通过邮递员发送相同的文件时,没有问题。文件通过rest成功加载到DB。 此外,当我尝试将数据直接放入curl命令而不是使用文件时,它成功地将数据加载到DB。 任何建议如何发送这个json文件休息与卷曲?
答案 0 :(得分:0)
您需要将内容类型设置为&#34; application / json&#34;。你试过......
curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' URL
类似于:
curl -H "Content-Type: application/json" -X POST -d '{"username":"abc","password":"abc"}' http://my.host.ip: 8083/api/kpi
<强>更新强>
我看到你的文件是一个txt文件&#34; @ R.txt&#34;你需要提供一个json文件。然后
你可以试试吗..
$ curl -vX POST http://my.host.ip:8083/api/kpi -d @R.json \
--header "Content-Type: application/json"
如果您仍想使用该文本文件,可以试试这个..
$ curl -F file=@R.txt http://my.host.ip:8083/api/kpi
或强>
$ curl -X POST -d @R.txt http://my.host.ip:8083/api/kpi
并确保您提供文件的绝对路径。
更新2.0
curl http://my.host.ip:8083/api/kpi -H "Content-type:application/json" -X POST -d @R.txt