J'envoie un message construit avec le tampon de protocole de Google à partir et appareil Android en utilisant ce code:App Engine et communes fileUpload
// 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) {
}
Finalement, ce code sera effectivement envoyer plus d'une partie ...
J'ai un servlet en cours d'exécution sur le moteur d'application de Google qui reçoit cette demande de poste et au moment n'a que le code suivant:
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);
}
}
Il est évident que le serveur ne fait pas très muc h maintenant! Mais j'ai remarqué qu'il semble recevoir deux parties à la fois appelées "message" et fichier "sdroidmsg", que je ne comprends vraiment pas. Sûrement il devrait seulement recevoir ceci une fois? Je pensais que peut-être que sdroidmsg pourrait être divisé en deux parties en raison de la taille, mais c'est une supposition complète, je ne sais pas vraiment le fonctionnement interne de ce qui se passe dans les coulisses. Pourrait-on expliquer pourquoi cela se passe? Je peux poster plus de code si nécessaire.