Я отправляю сообщение, созданное с помощью буфера протокола Google, на устройстве Android с помощью этого кода:
// Set up the HttpClient
HttpClient client = new DefaultHttpClient();
String url = "http://192.168.2.103:8888/sdroidmarshal";
HttpPost postRequest = new HttpPost(url);
// Create the content for the message
AbstractContentBody[] parts = new AbstractContentBody[1];
InputStream ins = new ByteArrayInputStream(offers.build().toByteArray());
parts[0] = new InputStreamBody(ins, "sdroidmsg");
// Add the content to the message
MultipartEntity requestContent = new MultipartEntity();
requestContent.addPart("message", parts[0]);
// Send!
postRequest.setEntity(requestContent);
client.execute(postRequest);
try {
ResponseHandler<String> responseHandler = new BasicResponseHandler();
String responseBody = client.execute(postRequest, responseHandler);
} catch (Throwable t) {
}
В конечном итоге этот код будет отправлять более одной части ...
У меня есть сервлет, работающий на движке приложений Google, который получает этот почтовый запрос, и на данный момент имеет только следующий код:
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
super.doPost(req, resp);
try {
ServletFileUpload upload = new ServletFileUpload();
resp.setContentType("text/plain");
FileItemIterator iterator = upload.getItemIterator(req);
while (iterator.hasNext()) {
FileItemStream item = iterator.next();
InputStream stream = item.openStream();
if (item.isFormField()) {
log.warning("Got a form field: " + item.getFieldName());
} else {
log.warning("Got an uploaded file: " + item.getFieldName() +
", name = " + item.getName());
}
}
} catch (Exception ex) {
throw new ServletException(ex);
}
}
Очевидно, что сервер не очень много делает прямо сейчас! Но я заметил, что он, кажется, получает две части, называемые «message» и файлом «sdroidmsg», которые я действительно не понимаю. Конечно, он должен получить это только один раз? Возможно, я подумал, что sdroidmsg может быть разделен на две части из-за размера, но это полное предположение, я действительно не знаю внутреннюю работу того, что происходит за сценой. В любом случае может объяснить, почему это происходит? Я могу опубликовать больше кода, если требуется.