Qual è il modo corretto di inviare l'intestazione del tipo di contenuto in curl?


1

Sto usando Mac 10.9.5 con shell bash. Sto cercando di inviare una richiesta tramite curl, ma continuo a ricevere errori quando provo a impostare l'intestazione del tipo di contenuto. Di seguito ci provo

davea$ curl -v -o -H "Content-Type: application/json" -X POST -d '{"username”:”username”,”password”:”password”}’ http://localhost:8080/myproject/login

ma curl restituisce un errore "curl: (6) Impossibile risolvere l'host 'Content-Type'". Di seguito è riportato l'output completo:

* getaddrinfo(3) failed for Content-Type:80
* Couldn't resolve host 'Content-Type'
* Closing connection 0
curl: (6) Couldn't resolve host 'Content-Type'
*   Trying ::1...
* Connected to localhost (::1) port 8080 (#1)
> POST /myproject/login HTTP/1.1
> User-Agent: curl/7.40.0
> Host: localhost:8080
> Accept: */*
> Content-Length: 40
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 40 out of 40 bytes
< HTTP/1.1 302 Found
< Server: Apache-Coyote/1.1
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< Set-Cookie: JSESSIONID=B980765C84EA5759F743D1AAE8E189D0; Path=/myproject/; HttpOnly
< Location: http://localhost:8080/myproject/login?error
< Content-Length: 0
< Date: Mon, 06 Jul 2015 16:03:37 GMT
< 
* Connection #1 to host localhost left intact

Qual è il modo corretto di inviare l'intestazione del tipo di contenuto tramite arricciatura?

Risposte:


2

Qual è il modo corretto di inviare l'intestazione del tipo di contenuto tramite curl?

Utilizzando il -Hparametro, come specificato:

-H "Content-Type: application/json"

D'altra parte, hai anche specificato l' -oopzione (output su file), senza specificare un file:

Se si desidera un indicatore di avanzamento per richieste POST o PUT HTTP, è necessario reindirizzare l'output della risposta su un file, utilizzando il reindirizzamento della shell (>), -o [file] o simile.

(da man curl)

Quindi il comando diventa:

$ curl -o output.txt -H "Content-Type: application/json" -X POST -d '{"username":"username","password":"password"}' http://localhost:8080/myproject/login

(NB Ho anche sostituito le virgolette intelligenti nel comando sopra mentre si sono fatte strada nella tua domanda)

Dovresti inviare l'intestazione e l'output (a output.txt) come specificato. Potresti anche lasciare il -o output.txtparametro se non lo richiedi. Anche se la man curlpagina non sembra specificarlo, nei test -vnon è possibile mescolarlo -o.


Salve, non ho più questo errore, ma non c'è niente nel file "output.txt".
Dave,

@Dave Sembrerebbe che -ve -onon possa essere usato insieme; se si desidera utilizzare l'output per il file -o; se vuoi -vl'output di erbose usa il reindirizzamento dei file ( > output.txt)
bertieb il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.