zoukankan      html  css  js  c++  java
  • 网络HTTP协议

    WebView:在应用中嵌入一个浏览器

    1 ......
    2     webView = (webView)findViewById(R.id.web_view);
    3     webView.getSettings().setJavaScriptEnabled(true);  //设置支持JS
    4     webView.setWebViewClient(new WebViewClient());  //跳转网页时,不打开系统浏览器,而是在当前webView中显示
    5     webView.loadUrl("http://www.baidu.com");  //传入网址
    6 ......

    webView需要在AndroidManifest.xml中声明权限

    HTTP协议

      原理:客户端向服务端发送一条HTTP请求,服务器收到请求后返回数据给客户端,客户端再对数据进行解析和处理。

      发送请求:HttpURLConnection和HttpClient两种方式;GET和POST两种方法。(GET从服务器获取数据,POST提交数据给服务器)

      HttpURLConnection:

        1、创建实例:new一个URL对象,并传入目标网络地址,调用openConnection()方法。

    1 URl url = new URL("http://www.baidu.com");
    2 HttpURLConnection connection = (HttpURLConnection)rul.openConnection();

        2、设置方法:connection.setRequestMethod("GET");

          3、其他设置:连接超时、读取超时、消息头等。

        4、调用getInputStream()获取服务器返回的输入流,并读取:InputStream in = connection.getInputStream();

        5、调用disconnect():connection.disconnect();

      HttpClient(接口):

        1、创建:HttpClient httpClient = new DefaultHttpClient();

        2、设置方法:GET:

                HttpGet httpGet = new HttpGet("http://www.baidu.com");

                httpClient.execute(httpGet);

                POST:

                HttpPost httpPost = new HttpPost("http://www.baidu.com");

                //创建NameValuePair结合存放待提交的参数

                List<NameValuePair>parms = new ArrayList<NameValuePair>();  

                prams.add(new BasicNameValuePair("username","admin"));  

                prams.add(new BasicNameValuePair("password","123456"));

                //传入entity

                UrlEncodedFormEntity entity = new UrlEncodedEntity(parms,"utf-8");

                httpPost.setEntity(entity);

                httpClient.execute(httpPost);

        3、返回HttoResponse对象,取出状态码:if(httpResponse.getStatusLine().getStatusCode()==200){......}

    1 if(httpResponse.getStatusLine().getStatusCode()==200){
    2   HttpEntity entity = httpResponse.getEntity();   
    3   String response = EntityUtils.toString(entity,"utf-8");  //含有中文需要指定字符集为utf-8
    4   Message message = new Message();
    5   meesage.what = SHOW_RESPONSE;
    6   message.obj = response.toString();
    7   handler.sendMessage(message);     
    8 }

    解析xml:

      1、Pull解析

    1 ......
    2   XmlPullParserFactory factory = XmlPullParserFactory.newInstance();  //获得XmlPullParserFactory对象
    3   XmlPullParser xmlPullParser = factory.newPullParser();  //获得XmlPullParser对象
    4   xmlPullParser.setInput(new StringReader(xmlData));  //传入xml数据进行解析
    5 ......

      2、Sax解析

      新建一个类继承DefaultHandler,并重写5个父类方法:startDocument()、startElement()、characters()、endElement()、endDocument()

    1 ......
    2   SAXParserFactory factory = SAXParserFactory.newInstance();  //获得SAXParserFactory对象
    3   XMLReader xmlReader = factory.newSAXParser().getXMLReader();  //通过工厂获取XMLReader对象
    4   ContentHandler handler = new ContentHandler();  
    5   xmlReader.setContentHandler(handler);  //将handler对象设置到xmlReader中
    6   xmlParser.parse(new InputSource(new StringReader(xmlData)));  //调用parse()解析
    7 ......

    解析JSON

      体积小,省流量

      1、JSONObject解析

    ......
      JSONArray jsonArray = new JSONArray(jsonData);
      
      for(int i=0;i<jsonArray.length;i++){
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        String id = jsonObject.getString("id");
        String name = jsonObject.getString("name");
        String version= jsonObject.getString("version");
      }
    ......

      2、GSON解析

      需要下载一个gson的jar包放到libs目录下

      将一段JSON格式的字符串自动映射成一个对象。

    ......
      Gson gson = new Gson();
      List<App> appList =gson.fromJson(jsonData,new TypeToken<List<App>>(){}.getType());
      for(App app:appList){
        ......
      }
    ......

      

                  

  • 相关阅读:
    JuiceSSH:安卓平台免费好用的 SSH 客户端
    git&github-本地库推送到远程库
    git&githib-给远程库取别名
    Git分支管理的本质
    MySQL学习笔记(一)--逻辑架构学习
    mysql-主从备份问题小结
    Docker--数据管理之Volumes
    初识OpenSSH--1
    一个最简单的Dockfile实践
    构词法2
  • 原文地址:https://www.cnblogs.com/yl-saber/p/6141201.html
Copyright © 2011-2022 走看看