2012-07-11 18 views
5

Próbuję znaleźć narzędzie, które pozwoli mi przetestować żądanie POST wielostronicowe/dane formularza i dostroić żądanie. W szczególności chcę, aby przetestować Nieobecność/obecność średnikiem w nagłówku Content-type:Jak testować żądanie wielostronicowe/dane formularza Żądanie POST

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66 

Mamy klienta, który nie wysyła średnik i nasz nowy aplet (przy użyciu Apache Commons FileUpload) nie może przeanalizować przesłanego pliku. Stara wersja naszego serwletu używa innej metody biblioteki do akceptowania/analizowania żądania i może przeanalizować plik. Dopóki nie uda mi się dowieść, że żądanie zakończy się powodzeniem, włączając średnik, właściciele aplikacji klienckiej nie chcą wprowadzać w nim żadnych zmian.

Używam cURL do uruchamiania moich testów przeciwko serwletowi, ale nie mogę zmodyfikować żądania, które generuje, aby wykluczyć średnik. Próbowałem dodatek Poster for Firefox i Skrzypek generowania żądania testu POST, ale wynikają one z tego błędu:

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

Czy ktoś znalazł sposób, aby skutecznie przetestować żądania POST wieloczęściowy/form-data z przesłanego plik?

Odpowiedz

1

Można użyć curl do testowania tych bibliotek, oto przykład za pomocą POST wieloczęściowy/form-data: https://stackoverflow.com/a/10765244/72176

Jedno lubię narzędzie wiersza polecenia jak zwinięcie jest to łatwe do powtórzenia (w bash , do & enter) i możesz zapisać test na później.

Edycja: Istnieje możliwość wysłania niestandardowego nagłówka, który chcesz przetestować. Kluczem jest użycie surowych poleceń curl w stosunku do metod wygody, które formatują żądanie dla ciebie. Użyj -H, aby przekazać surowy nagłówek i użyj --data-binary, aby przekazać treść z pliku bez zmiany końców linii (bardzo ważne dla wieloczęściowych/formularzy danych, które muszą mieć końcówki linii CRLF). Oto przykład:

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

od tego, czy jest to bardziej wygodne, aby nie korzystać z pliku pośredniczącego, można napisać jeden wiersz tak:

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 

te 2 przykłady obejmują średnik, ale można usunąć w razie potrzeby.

+0

Byłem/używam curl, ale, jak wyjaśniono w moim pytaniu, nie mogłem go użyć do poprawienia danych nagłówka żądania. – sdoca

+0

Zaktualizowałem moją odpowiedź, jestem prawie pewien, że możesz to zrobić. Unikaj metod tworzenia formularzy i bezpośrednio określ nagłówki. –

+0

Dzięki. Nie muszę już tego robić, ale dobrze jest wiedzieć, że może być inna opcja, jeśli zajdzie taka potrzeba. – sdoca