Webview を使用して Exchange メール サーバーにデータを送信しています。( http 投稿は大きな添付ファイルを含むメールでは機能しなかったため、この方法を試しています)。
以下の私のコードを見てください。
エンコードなしでデータを送信すると、送信に失敗します。以下のコードに従って、データ全体のエンコードを行うと、それでも失敗します。
コメント付きのコードを試してみると、データを名前と値のペアとして保存し、それをエンコードすると、メールは受信されますが、添付ファイルはありません。では、ここでエンコーディングを行う正しい方法は何ですか? 添付ファイルのタイプは ContentBody です。他のすべてのパラメータは文字列です。
MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE,);
entity.addPart("hidid", new StringBody(hidid));
entity.addPart("hidchk", new StringBody(hidchk));
entity.addPart("hidcanary", new StringBody(canary));
entity.addPart("attach", attachment);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
entity.writeTo(bytes);
String fullUrl = baseUrl + "?ae=Dialog&t=Attach&a=Add";
webView.postUrl(fullUrl, EncodingUtils.getBytes(bytes.toString(),"BASE64"));
/* List<NameValuePair> parameters = new ArrayList<NameValuePair>();
parameters.add(new BasicNameValuePair("hidid", hidid));
parameters.add(new BasicNameValuePair("hidchk", hidchk));
parameters.add(new BasicNameValuePair("hidcanary", canary));
parameters.add(new BasicNameValuePair("attach", attachment.toString()));
UrlEncodedFormEntity entity1 = new UrlEncodedFormEntity(parameters);
String fullUrl = baseUrl + "?ae=Dialog&t=Attach&a=Add";
webView.postUrl(fullUrl, EntityUtils.toByteArray(entity1)); */
彼の Android WebView::postUrl メソッドは、 "application/x-www-form-urlencoded" に対してよりハードコーディングされていることがわかります。