JavaからのPOST

今日、私はこの経験を共有します。 流行語RESTを聞いて、この傾向をプロジェクトにすぐに適用することにしました。 プロジェクトでは、対応するリソースの画像を保存する必要がありました。 そして、そのような合意が選ばれました:

ちなみに、モデルは報われました。 今日まで使用しています。 しかし、開発プロセスでは、この奇跡をどのように試してテストするかという疑問が生じました。 さらに、この機能のクライアント(Flex、btw)への実装はまだ準備ができていませんでした。



同様の解決策がインターネットで見つかりました: http : //www.devx.com/Java/Article/17679/1954

追加の依存関係を持たない1つのクラスの単純な「ライブラリ」は、ブラウザまたはFlexクライアントがこの場合に行うように、1つのメソッドでPOSTリクエストを含むファイルを送信します。

InputStream serverInput = ClientHttpRequest.post(
new java.net.URL(urlString),
new Object[]{
"name", "J.Doe",
"email", "abuse@spamcop.com",
"test.txt", new
File("c:\w\image.jpg")
});


サーブレットは以下を受け入れます。

-----------------------------k8rws1oxpkuv1g53x0ud6a004-j12py3q5jcay
Content-Disposition: form-data; name="name"

J.Doe
-----------------------------k8rws1oxpkuv1g53x0ud6a004-j12py3q5jcay
Content-Disposition: form-data; name="email"

abuse@spamcop.com
-----------------------------k8rws1oxpkuv1g53x0ud6a004-j12py3q5jcay
Content-Disposition: form-data; name="test.txt"; filename="image.jpg"
Content-Type: image/jpeg

...


完全を期すために、サーバー側ではapache commons fileuploadライブラリが使用されていると言います。

ServletFileUpload upload = new ServletFileUpload();

FileItemIterator iter = upload.getItemIterator(httpServletRequest);
while (iter.hasNext()) {
FileItemStream item = iter.next();
if (!item.isFormField()) {
InputStream stream = item.openStream();

//
}
}


* This source code was highlighted with Source Code Highlighter .

Source: https://habr.com/ru/post/J50406/


All Articles