json - Kan ikke sende postanmodning med cUrl, når du læser data fra fil

Indlæg af Hanne Mølgaard Plasc

Problem



Hej, jeg har et problem med at sende ved hjælp af postkommando en jSon-fil.
Jeg bruger curl i version 7.54.0 på windows.
Jeg forsøgte at udføre kommandoen:


E:Pobrane Na Big DatacURLcurl-7.54.0-win64-mingwin>curl -v -X POST 
http://my.host.ip: 8083/api/kpi -H "content-type: application/json" -d 
@R.txt


Og jeg får svar:


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.
   at KPI.WebApi.Controllers.KpiC
ontroller.<Post>d\_\_2.MoveNext()"}* Connection #0 to host 10.23.2.124 left intact


Det, jeg gerne vil tilføje, er at når jeg forsøger at sende den samme fil via postbud, er der ikke noget problem. Filen er indlæst via hvile til DB.
Også da jeg forsøgte at sætte data direkte i curl-kommandoen, i stedet for at bruge fil, blev den med succes indlæst data til DB.
Ethvert forslag til, hvordan du sender denne json-fil til hvile med krøllet?

Bedste reference


Du skal indstille din indholdstype til 'application/json'. Har du forsøgt...


curl -X POST -H "Content-Type: application/json" -d '{"key":"val"}' URL


Så noget som:


curl -H "Content-Type: application/json" -X POST -d '{"username":"abc","password":"abc"}' http://my.host.ip: 8083/api/kpi


UPDATE


Jeg ser din fil er en txt-fil '@ R.txt', du skal give en json-fil. og så


kan du prøve det her


$ curl -vX POST  http://my.host.ip:8083/api/kpi -d @R.json 
--header "Content-Type: application/json"


Hvis du stadig vil bruge tekstfilen, kan du prøve dette ..


 $ curl -F file=@R.txt http://my.host.ip:8083/api/kpi


eller


$ curl -X POST -d @R.txt http://my.host.ip:8083/api/kpi


og sørg også for, at du giver den absolutte vej til filen.


Opdater 2.0


curl http://my.host.ip:8083/api/kpi -H "Content-type:application/json" -X POST -d @R.txt