2011-09-01 177 views
0

我試圖在我的應用程序的WebView中顯示驗證碼jpeg圖像(它由一個Java servlet動態生成),但是,它有時會顯示一個藍色問號而不是驗證碼圖片。以下是我的shouldOverrideUrlLoading(WebView view, String url)方法MyWebViewClient延伸的類別WebViewClientAndroid:WebView loadDataWithBaseURL不顯示驗證碼圖像

我在我的清單中啓用了Internet訪問,並且問題約有80%的時間發生。即有時圖像確實顯示正確,但非常罕見。

在這裏還有另一個類似的問題Image with dynamic src loads in Android browser, but not in Webview,但似乎沒有一個確定的答案。

在此先感謝

try 
      { 
       CookieSyncManager.getInstance().sync(); 
       Log.v("Hello","CookieStore: " + httpClient.getCookieStore().toString()); 
       HttpResponse response = httpClient.execute(httppost); 
       data = new BasicResponseHandler().handleResponse(response); 
       view.loadDataWithBaseURL(URL.toString(), data, "text/html", "UTF-8" , null); 
       //Log.v("Hello","Data: " + data.toString()); 
      } 
      catch (ClientProtocolException e) 
      { 
       Log.v("Hello","ClientProtocolException:Overriding"); 
       Log.v("Hello",e.toString()); 
       e.printStackTrace();  
      } 
      catch (IOException e) 
      { 
       Log.v("Hello","IOException:Overriding"); 
       Log.v("Hello",e.toString()); 
       e.printStackTrace(); 
      } 

回答

1

我剛剛得到了同樣的問題。我確定了這個問題並解決了它(在我的情況下)。您可以注意到,在HTML代碼中,img標籤的src指向站點的相對路徑。像<img src="/relativepath/captcha.jpg?12345678"/>。所有你需要做的就是注入完整的路徑(主機+相對路徑)來獲得類似<img src="http://yourhost.com/relativepath/captcha.jpg?12345678">的東西。

  1. 閱讀HTML代碼,行,用各行線
  2. 匹配序列"<img src"(或許真的有點differente在您的網站)
  3. 當你找到的行,直到你找到你把它分解裏面的src=""
  4. 鏈接重建與主機名的標籤就可以了:<img src="http://host.com" + link >

然後圖像會出現;)

0

嘗試使用的view.loadUrl(URL.toString());代替loadDataWithBaseURL

+0

我試過了,但是然後WebView將不顯示任何圖像。進一步閱讀,我認爲'loadUrl'方法不支持從網絡/ Internet加載圖像。 – skaneria