前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android:网络编程及Internet应用

Android:网络编程及Internet应用

作者头像
提莫队长
发布2019-03-01 09:53:35
9770
发布2019-03-01 09:53:35
举报
文章被收录于专栏:刘晓杰刘晓杰刘晓杰

一、通过HTTP访问网络

1、使用HttpURLConnection访问网络

URL url = new URL(sourceUrl);

HttpURLConnection urlConn =(HttpURLConnection)url.openConnection();

这只是创建了一个对象,并没有真正执行连接。

创建对象后就可以发送HTTP请求了。

(1)发送GET请求

使用HttpURLConnection发送请求时,默认GET。因此,只要在连接地址后面通过参数传递

String sourceUrl = “http://xxx.jsp?user=wgh,email=15311@qq.com”;

在用GET传递中文参数时会产生乱码,因此需要进行Base64编码来解决乱码问题

public String base64(String content){

             try {

                            content= Base64.encodeToString(content.getBytes("utf-8"), Base64.DEFAULT);

                            content= URLEncoder.encode(content, StandardCharsets.UTF_8.toString());

                   }catch (UnsupportedEncodingException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

                   returncontent;

}

当然,也可以用Java的URLEncoder来实现

(2)发送POST请求

GET方式只适合大小在1024字节以内的数据,当要发送的数据较大时,就需要使用POST方式来发送

HttpURLConnection urlConn =(HttpURLConnection)url.openConnection();

urlConn.setRequestMethod(“POST”);

发送POST请求要复杂一些,需要设置如下参数:

setDoInput(true);

setDoOutput(true);

setUseCaches(false);

setInstanceFollowRedirects(true);//自动执行Http重定向

//设置内容类型是表单数据

setRequestProperty(“Content-Type”, “application/x-www-form-urlencoded”);

2、使用HttpClient访问网络

HttpClient实际上是对Java访问网络的封装。HttpURLConnection类中的输入/输出流操作,在HttpClient中同一封装成HttpGet、HttpPost、HttpResponse。注意比较两种方法的红色部分

(1)发送GET请求

    String target = "http://xxx.jsp?params=get";

    HttpClient httpclient = new DefaultHttpClient();//创建HttpClient对象

HttpGet httpget = new HttpGet(target);//创建HttpGet对象

    //httpget.setParams(params);

    try {

                            HttpResponsehttpresponse = httpclient.execute(httpget);//发送请求

                            httpresponse.getEntity();//获取服务器的响应内容

                   }catch (ClientProtocolException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

(2)发送POST请求

       String target = "http://xxx.jsp?params=get";

       HttpClient httpclient = new DefaultHttpClient();//创建HttpClient对象

        HttpPost httppost = newHttpPost(target);//创建HttpGet对象

        //httppost.setParams(params);

        //设置编码方式

        //httppost.setEntity((HttpEntity) newUrlEncodedFormEntity(params, "utf-8"));

       try {

                            HttpResponsehttpresponse = httpclient.execute(httppost);//发送请求

                            httpresponse.getEntity();//获取服务器的响应内容

                   }catch (ClientProtocolException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }catch (IOException e) {

                            //TODO Auto-generated catch block

                            e.printStackTrace();

                   }

二、使用WebView显示网页

1.使用WebView浏览网页

       WebView wv = (WebView)findViewById(R.id.webView1);

wv.loadUrl("http://www.baidu.com");//必须要有http,不然加载不了

       //支持放大和缩小功能

       //wv.getSettings().setSupportZoom(true);

       //wv.getSettings().setBuiltInZoomControls(true);

同时还支持以下方法:

loadUrl(String url)

loadData(String data, String mimeType,String encoding)      把指定字符串数据记载到浏览器中

loadDataWithBaseURL(String baseUrl, Stringdata, String mimeType, String encoding, String historyUrl)   用于基于URL加载指定的数据

capturePicture()       创建屏幕快照

goBack()  后退,相当于浏览器的后退按钮

goForward()     前进,相当于浏览器的前进按钮

stopLoading()

reload()

2.使用WebView加载HTML代码

进行游戏开发时,使用HTML代码进行显示比较实用。使用loadData()加载中文html会产生乱码,但使用loadDataWithBaseURL()就不会出现这种情况

loadDataWithBaseURL(String baseUrl, Stringdata, String mimeType, String encoding, String historyUrl)

baseUrl:用于指定当前页面的url。如果为null,则使用about:blank,即空白页

data:用于要显示的字符串数据

mimeType:指定要显示的MIME类型,如果为null,则使用默认的text/html

encoding:用于指定数据编码方式

historyUrl:用于指定进入当前页面之前的url。如果为null,则使用about:blank,即空白页

示例:

       WebView wv = (WebView)findViewById(R.id.webView1);

       StringBuilder sb = new StringBuilder();

       sb.append("你好!");

wv.loadDataWithBaseURL(null, sb.toString(), "text/html","utf-8", null);

3.让WebView支持JavaScript

       wv = (WebView)findViewById(R.id.webView1);

                   wv.getSettings().setJavaScriptEnabled(true);

                   wv.setWebChromeClient(newWebChromeClient());//处理JavaScript对话框

                   wv.setWebViewClient(newWebViewClient());//不能省。省略将使用默认浏览器

       CheckBox check = (CheckBox)findViewById(R.id.checkBox1);

       check.setOnCheckedChangeListener(new OnCheckedChangeListener(){

                            @Override

                            publicvoid onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

                                     //TODO Auto-generated method stub

                                     if(isChecked){

                                               wv.loadUrl("https://www.baidu.com");

                                     }else{

                                               wv.loadUrl("http://www.sina.com.cn");

                                     }

                            }

       });

       wv.loadUrl("http://www.qq.com");

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015年12月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、通过HTTP访问网络
    • 1、使用HttpURLConnection访问网络
      • 2、使用HttpClient访问网络
      • 二、使用WebView显示网页
        • 1.使用WebView浏览网页
          • 2.使用WebView加载HTML代码
            • 3.让WebView支持JavaScript
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档