2012-07-11 69 views
5

Tôi đang cố gắng tìm một công cụ cho phép tôi kiểm tra yêu cầu POST nhiều biểu mẫu/dữ liệu biểu mẫu và tinh chỉnh yêu cầu. Cụ thể, tôi muốn thử nghiệm sự vắng mặt/hiện diện của dấu chấm phẩy trong tiêu đề content-type:Cách kiểm tra yêu cầu POST/dữ liệu dạng mẫu

multipart/form-data; boundary=140f0f40c9f411e19b230800200c9a66 

Chúng tôi có một khách hàng mà không gửi một dấu chấm phẩy và servlet mới của chúng tôi (sử dụng Apache Commons FileUpload) không thể phân tích cú pháp tệp đã tải lên. Phiên bản cũ của servlet của chúng tôi sử dụng một phương thức thư viện khác để chấp nhận/phân tích cú pháp yêu cầu và nó có thể phân tích cú pháp tệp. Cho đến khi tôi có thể chứng minh rằng yêu cầu sẽ thành công bằng cách bao gồm dấu chấm phẩy, chủ sở hữu ứng dụng khách không muốn thực hiện bất kỳ thay đổi nào đối với nó.

Tôi đã sử dụng cURL để chạy thử nghiệm của mình đối với servlet, nhưng tôi không thể tinh chỉnh yêu cầu mà nó tạo ra để loại trừ dấu chấm phẩy. Tôi đã thử các addon Poster cho Firefox và Fiddler để tạo ra một yêu cầu kiểm tra POST, nhưng họ gây ra lỗi này:

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

Có ai tìm thấy một cách để kiểm tra thành công một yêu cầu multipart/form-data POST với một tải lên tập tin?

Trả lời

1

Bạn có thể sử dụng curl để thử nghiệm các thư viện này, sau đây là một ví dụ sử dụng một POST multipart/form-data: https://stackoverflow.com/a/10765244/72176

Một điều tôi thích về một công cụ dòng lệnh như curl là nó dễ dàng để lặp lại (trong bash , lên & nhập) và bạn có thể lưu thử nghiệm sau này.

Chỉnh sửa: Bạn hoàn toàn có thể gửi tiêu đề tùy chỉnh mà bạn muốn kiểm tra. Điều quan trọng là sử dụng lệnh thô của curl qua các phương thức tiện lợi định dạng yêu cầu cho bạn. Sử dụng -H để chuyển vào tiêu đề thô và sử dụng --data-binary để truyền nội dung từ tệp mà không thay đổi kết thúc dòng (rất quan trọng đối với multipart/form-data mà phải có dòng kết thúc CRLF). Dưới đây là một ví dụ:

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

của nếu nó thuận tiện hơn không sử dụng các tập tin trung gian, bạn có thể viết nó trở thành một dòng như vậy:

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 

Những 2 ví dụ bao gồm các dấu chấm phẩy, nhưng bạn có thể loại bỏ nó khi cần thiết.

+0

Tôi đã/đang sử dụng curl nhưng, như được giải thích trong câu hỏi của tôi, tôi không thể sử dụng nó để tinh chỉnh dữ liệu tiêu đề yêu cầu. – sdoca

+0

Tôi đã cập nhật câu trả lời của mình, tôi chắc chắn bạn có thể làm điều đó. Tránh các phương thức tạo thuận tiện và chỉ định trực tiếp tiêu đề. –

+0

Cảm ơn. Tôi không còn cần phải làm điều chỉnh, nhưng nó là tốt để biết rằng có thể có một tùy chọn nếu nhu cầu phát sinh một lần nữa. – sdoca

Các vấn đề liên quan