2011-10-04 13 views
5

En mi aplicación para Android, estoy publicando datos a una dirección URL https servlet desde un WebView como se muestra a continuaciónAndroid WebView.postUrl() que muestra la pantalla en blanco cuando la publicación de HTTPS URL

String postData = "fileContents=" + fileCon; 
WebView.postUrl(url, EncodingUtils.getBytes(postData, "BASE64")); 

La dirección URL en el código anterior es una URL de servlet para la cual tengo que publicar algunos datos y desde allí estoy redireccionando a otra URL.

El código anterior funcionó bien cuando la URL del servlet es solo HTTP. Pero cuando se cambia a HTTPS, muestra una pantalla en blanco.

Probé la siguiente solución para android HTTPS problema: http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/

Quité el código de onCreate() método y probado el siguiente código

ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
postParameters.add(new BasicNameValuePair("fileContents", fileCon)); 
DefaultHttpClient client = new MyHttpClient(getApplicationContext()); 
try { 
    HttpPost request = new HttpPost(url); 
    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); 
    request.setEntity(formEntity); 
    HttpResponse resp = client.execute(request); 
} catch(Exception e){ 
    e.printStackTrace(); 
} 

Ahora estoy en condiciones de publicar los datos y desde allí está redirigiendo también. Pero aún estoy viendo una pantalla en blanco.

¿Es porque no tengo loadUrl o postUrl Estoy viendo una pantalla en blanco?

¿O debería poner el código de arriba en cualquier método de WebView?

+0

probar este http://stackoverflow.com/a/10970539/1008278 – VenomVendor

Respuesta

0

Prueba este

ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>(); 
    postParameters.add(new BasicNameValuePair("fileContents", fileCon)); 
    DefaultHttpClient client = new MyHttpClient(getApplicationContext()); 
try { 
    HttpPost request = new HttpPost(url); 
    UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(postParameters); 
    request.setEntity(formEntity); 
    HttpResponse resp = client.execute(request); 

    //Get data 
    HttpEntity entity = resp.getEntity(); 
    InputStream is = entity.getContent(); 
    String data = convertStreamToString(is); 
    browser=(WebView)findViewById(R.id.myWebView); 
    browser.loadData(data,"text/html", "UTF-8"); 
} catch(Exception e){ 
    e.printStackTrace(); 
} 

InputStream con el método de encordado:

private static String convertStreamToString(InputStream is) { 

BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 
StringBuilder sb = new StringBuilder(); 

String line = null; 
try { 
    while ((line = reader.readLine()) != null) { 
     sb.append((line + "\n")); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    try { 
     is.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
return sb.toString(); 

}

Cuestiones relacionadas