クライアント側でGWTを使用してPOSTリクエストでxmlファイルを文字列+画像として送信するための多くのアプローチをすでに試しました。文字列は正常に送信できますが、RequestBuilder を使用してファイル (写真) を送信する方法がわかりません。文字列を送信することしかできません。
GWT クライアント (RequestBuilder) を使用して multipart/form-data POST リクエストでファイルを送信する方法を知っている人はいますか?
PS: ファイルをアップロードしたくないので、アップローダーなどは必要ありません。Phonegap を使用してモバイル アプリを開発し、POST 要求ごとにサーバー (サード パーティ サービス) に送信する必要がある写真を作成しています。
前もって感謝します!
ここにいくつかのコード:
public void sendPost() throws RequestException {
String boundary = createBoundary();
String xml = "<note> <to>Müller</to> <from>Jani</from> <heading>Erinnerung</heading> <body>Ich wohne in der Leipzigerstraße</body> </note>";
String requestData = getRequestData(boundary, xml);
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "http://localhost:8080/xxx/yyy");
builder.setHeader("Content-Type", "multipart/form-data; charset=UTF-8; boundary=" + boundary);
builder.setHeader("Content-Length", Long.toString(requestData.length()));
try {
builder.sendRequest(requestData, new RequestCallback() {
public void onResponseReceived(Request request, Response response) {
}
public void onError(Request request, Throwable exception) {
exception.printStackTrace();
}
});
} catch (RequestException e) {
e.printStackTrace();
}
}
private String getRequestData(String boundary, String xml) {
String s = "";
s += "--" + boundary + "\r\n";
s += getRequestParameter("xml", xml + "");
s += "--" + boundary + "--\r\n"; // end
return s;
}
private String getRequestParameter(String key, String value) {
return "Content-Disposition: form-data; name=\"" + key + "\"\r\n\r\n"
+ value + "\r\n";
}
private String createBoundary() {
return "----GoneVerticalBoundary" + getRandomStr() + getRandomStr();
}
private String getRandomStr() {
return Long.toString(random.nextLong(), 36); //random -> DEFINED IN THE CLASS BODY
}