您的位置:首页 > 理论基础 > 计算机网络

webview加载网络数据显示

2015-03-16 20:26 148 查看
[code]   //uri地址

 private String url = "http://sns.maimaicha.com/api?apikey=b4f4ee31a8b9acc866ef2afb754c33e6&format=json
 &method=news.getNewsContent&id=7267";

    webview=(WebView) this.findViewById(R.id.webview);

    //1.得到WebView的设置对象
    WebSettings webSettings=this.webview.getSettings();
    //2.启用WebView的缩放功能
    webSettings.setBuiltInZoomControls(true);

    //设置支持JavaScript语言
    mWebView.getSettings().setJavaScriptEnabled(true);

    //加载指定路径
    webview.loadUrl(url);

    //设置使用本webview打开网络链接
    webview.setWebViewClient(new WebViewClient(){
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;  //返回有效
        }
    });

    //开启线程,加载数据
    new Thread(new Runnable() {

        @Override
        public void run() {
               HttpClient client=new DefaultHttpClient();
               HttpGet get=new HttpGet(url);
               HttpResponse response=null;
               HttpEntity entity=null;

               try {
                   response=client.execute(get);
                   if(response.getStatusLine().getStatusCode()==200){
                      entity=response.getEntity();
                      String json=EntityUtils.toString(entity);

                       JSONObject obj=new JSONObject(json);
                       obj=obj.getJSONObject("data");
                       //获取json字符串,其中包含html标签
                       final String content=obj.optString("wap_content");

                       webview.post(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                        //  (content为html文本)
                            webview.loadDataWithBaseURL(null, content,"text/html", "utf-8", null);
                        }
                    });

                   }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }).start();


注:

在android中,服务端可以调用客户端编写的java代码:

在android客户端:

[code]public final class JSObject{

    /**
     * 供服务器端使用javascript回调的客户端方法
     * @param userName 用户名(从服务器端传递过来的实参值传递给当前形参)
     * @param pwd 密码(从服务器端传递过来的实参值传递给当前形参)
     * @return 返回的结果
     */
    @JavascriptInterface//注解,表示本方法对外暴露,让服务器端的javascript调用的
    public String getMessage(String userName,String pwd){
        String result=userName+":"+pwd; 
        System.out.println("result="+result);
        return result;
    }
}


然后对webview进行设置:

[code] //1.启用WebView对象javaScript语言的支持
    webSettings.setJavaScriptEnabled(true);

//2. 注册Java对象和javascript进行沟通的对象和别名(是在javascript中使用的)
    this.webView.addJavascriptInterface(new JSObject(), "jsObject");
  //执行
 this.webView.loadUrl(url);


在服务端:js代码

[code]function doSubmit(){
            var frm=document.frm;
            if(frm.text_userName.value==""){
                alert("请输入用户名!");
                frm.text_userName.focus();
                return false;
            }

            frm.text_pwd.focus();

            if(frm.text_pwd.value==""){
                alert("请输入密码!");
                return false;
            }

            var userName=frm.text_userName.value;
            var pwd=frm.text_pwd.value;
            //javascript调用Java代码
            var result=jsObject.getMessage(userName,pwd);
            alert("result="+result);

            return true;

        }
    </script>


客户端处理:

[code] //注册服务器端回调接口对象
    webView.setWebChromeClient(new WebChromeClient(){

        //处理alert弹出框的方法
        @Override
        public boolean onJsAlert(WebView view, String url, String message,
                final JsResult result) {

            Builder builder=new Builder(MainActivity.this);
            builder.setTitle("提示信息");
            builder.setMessage(message);
            builder.setPositiveButton("确定",new OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    //弹出javascript确认对话框
                    result.confirm();       
                }
            });
            builder.create().show();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: