Questa è la mia classe per intera, dove ho usato l'AsincThread:
La richiesta è all'interno del metodo doInBackground() praticamente, purtroppo ho dei problemi con il server per cui non posso testare se funzioni effettivamente, per questo chiedo.
protected String doInBackground(Void... params) {
return uploadFile();
}
private String uploadFile() {
String responseString = null;
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(Config.FILE_UPLOAD_URL);
try {
AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
new ProgressListener() {
@Override
public void transferred(long num) {
publishProgress((int) ((num / (float) totalSize) * 100));
}
});
File sourceFile = new File(filePath);
// Adding file data to http body
entity.addPart("image", new FileBody(sourceFile));
totalSize = entity.getContentLength();
httppost.setEntity(entity);
// Making server call
HttpResponse response = httpclient.execute(httppost);
HttpEntity r_entity = response.getEntity();
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == 200) {
// Server response
responseString = EntityUtils.toString(r_entity);
try {
HttpClient client = new DefaultHttpClient();
URI getURL = new URI("http://x.y.k.z:8080/MyServlet?collection="+collection+"&name="+filename);
Log.i("QUERY",getURL.getQuery());
HttpGet get = new HttpGet(getURL);
HttpResponse responseGet = client.execute(get);
HttpEntity resEntityGet = responseGet.getEntity();
if (resEntityGet != null) {
Log.i("GET RESPONSE",EntityUtils.toString(resEntityGet));
}
String responseStr = EntityUtils.toString(responseGet.getEntity());
} catch (Exception e) {
e.printStackTrace();
}
} else {
responseString = "Error occurred! Http Status Code: "
+ statusCode;
}
} catch (ClientProtocolException e) {
responseString = e.toString();
} catch (IOException e) {
responseString = e.toString();
}
return responseString;
}
@Override
protected void onPostExecute(String result) {
Log.e(TAG, "Response from server: " + result);
// showing the server response in an alert dialog
showAlert(result);
super.onPostExecute(result);
}
Per quanto riguarda la risposta il punto è che la pagina web generata dev'essere dinamica sulla base dell'elaborazione della servlet.
Mi spiego meglio:
a seconda del risultato dell'elaborazione della servlet può essere visualizzata una pagina statica oppure una pagina con elementi provenienti da un interrogazione a un db.
Avevo pensato di poter generare questa pagina tramite jsp, ma mi sfugge come poter fare le cose contemporaneamente, ovvero generare dinamicamente la pagina tramite la servlet e poi visualizzare questa particolare versione tramite android. Se potessi illustrarmi un po di codice della servlet te ne sarei grato.
Ti ringrazio per la pazienza