2012-07-11 12 views
5

Sto cercando uno strumento che mi consenta di testare una richiesta POST multipart/form-data e di modificare la richiesta. In particolare, voglio provare l'assenza/presenza del punto e virgola nell'intestazione Content-Type:Come testare la richiesta POST multipart/form-data

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66 

Abbiamo un cliente che non invia un punto e virgola e il nostro nuovo servlet (usando Apache Commons FileUpload) non può analizzare il file caricato. La vecchia versione del nostro servlet utilizza un metodo di libreria diverso per accettare/analizzare la richiesta e può analizzare il file. Finché non riesco a dimostrare che la richiesta avrà successo includendo il punto e virgola, i proprietari dell'app client non vogliono apportare alcuna modifica.

Ho usato cURL per eseguire i miei test contro il servlet, ma non riesco a modificare la richiesta che genera per escludere il punto e virgola. Ho provato l'addon poster per Firefox e Fiddler per generare una richiesta di test POST, ma si tradurrà in questo errore:

org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly 

Qualcuno ha trovato un modo per testare con successo una richiesta di multipart/form-data POST con una caricati file?

risposta

1

È possibile utilizzare curl per testare queste librerie, ecco un esempio utilizzando un POST multipart/form-data: https://stackoverflow.com/a/10765244/72176

Una cosa che mi piace di uno strumento da riga di comando come ricciolo si è facile da ripetere (in bash , su & invio), e puoi salvare il test per dopo.

Modifica: è possibile inviare l'intestazione personalizzata che si desidera testare. La chiave è usare i comandi grezzi di curl sui metodi di convenienza che formattano la richiesta per te. Utilizzare -H per passare nell'intestazione non elaborata e utilizzare --data-binary per passare nel corpo da un file senza modificare le terminazioni di riga (molto importante per dati multipart/form che deve avere terminazioni di linea CRLF). Ecco un esempio:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" --data-binary @test.txt http://localhost:3000/test 

di se è più conveniente non utilizzare il file intermediario, è possibile scrivere una riga in questo modo:

curl -X POST -H "Content-Type: multipart/form-data; boundary=----------------------------4ebf00fbcf09" -d $'------------------------------4ebf00fbcf09\r\nContent-Disposition: form-data; name="example"\r\n\r\ntest\r\n------------------------------4ebf00fbcf09--\r\n' http://localhost:3000/test 

Questi 2 esempi includono il punto e virgola, ma è possibile rimuovere è necessario.

+0

Io ero/faccio uso dell'arricciatura ma, come spiegato nella mia domanda, non potrei usarlo per il tweaking dei dati dell'intestazione della richiesta. – sdoca

+0

Ho aggiornato la mia risposta, sono abbastanza sicuro che tu possa farlo. Evita i metodi del modulo di convenienza e specifica direttamente le intestazioni. –

+0

Grazie. Non ho più bisogno di fare il tweaking, ma è bene sapere che potrebbe esserci un'altra opzione se ne sorgesse la necessità. – sdoca

Problemi correlati