2011-10-04 24 views
5

W moim android app, mam księgowania danych do adresu URL https serwletu ze WebView jak pokazano poniżejAndroid WebView.postUrl() pokazując pusty ekran podczas wysyłania na HTTPS URL

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

URL w powyższym kodzie to adres URL serwletu, na który muszę opublikować dane, a następnie przekierowuję do innego adresu URL.

Powyższy kod działał poprawnie, gdy adres URL serwletu to tylko HTTP. Ale po zmianie na HTTPS wyświetla się pusty ekran.

Próbowałem następujące rozwiązanie dla Androida HTTPS problemu: http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/

usunąłem powyższy kod z onCreate() metody i wypróbowany następujący kod

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(); 
} 

Teraz jestem w stanie opublikować dane oraz tam też przekierowuje. Ale wciąż widzę pusty ekran.

Czy dlatego, że nie mam ani loadUrl lub postUrl widzę czarny ekran?

Czy powinienem umieścić powyższy kod w dowolnej metodzie WebView?

+0

Spróbuj http://stackoverflow.com/a/10970539/1008278 – VenomVendor

Odpowiedz

0

Spróbuj

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 metody String:

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(); 

}

Powiązane problemy