Android-使用网络技术

 

一、WebView

作用:在自己的应用程序里嵌入一个浏览器,从而非常轻松的展示各种各样的网页。

步骤:

①授权

修改AndroidMainfest.xml文件,加入权限说明:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.demo">
    <uses-permission android:name="android.permission.INTERNET"/>

②.xml文件

 <WebView
        android:id="@+id/webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="MissingConstraints" />

③.java文件

  WebView webView =(WebView)findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("https://www.baidu.com");

注:代码可以运行的前提是你的手机或者模拟器是连网的,如果是模拟器,只需要保证电脑上能正常上网即可。 

 

二、HTTP协议访问网络

使用HttpURL

①new 一个URL对象,并传入目标的网络地址,然后调用一下openConnection方法

 URL url=new URL("https://www.baidu.com");
 connection=(HttpURLConnection)url.openConnection();

②设置Http请求所使用的方法:POST  GET

GET:从服务器中获取数据

POST:提交数据给服务器

  connection.setRequestMethod("GET");

③设置一些连接超时,读取超时等的自由定制

   connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);

④使用getInputStream方法获取服务器返回的输入流,对输入流进行读取

    InputStream in=connection.getInputStream();

⑤调用disconnect方法将HTTP连接关掉

   connection.disconnect();

实例:.java文件

package com.example.demo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URI;
import java.net.URL;

public class Index extends AppCompatActivity implements View.OnClickListener {

    TextView responseText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_index);
        Button button=(Button)findViewById(R.id.test);
        button.setOnClickListener(this);
        responseText=(TextView)findViewById(R.id.response_text);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.test:{
                SendRequest();
                break;
            }
            default:
                break;
        }

    }
    private  void  SendRequest(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                HttpURLConnection connection=null;
                BufferedReader reader=null;
                try{
                    URL url=new URL("https://www.baidu.com");
                    connection=(HttpURLConnection)url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(8000);
                    connection.setReadTimeout(8000);
                    InputStream in=connection.getInputStream();
                    reader=new BufferedReader(new InputStreamReader(in));
                    StringBuilder response =new StringBuilder();
                    String line;
                    while((line=reader.readLine())!=null){
                        response.append(line);
                    }
                    showResponse(response.toString());
                }catch (Exception e) {
                    e.printStackTrace();
                }
                finally {
                    if(reader!=null){
                        try{
                            reader.close();
                        }catch (IOException e){
                            e.printStackTrace();
                        }
                    }
                    if(connection!=null){
                        connection.disconnect();
                    }
                }
            }
        }).start();
    }
    private  void showResponse(final String response){
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                responseText.setText(response);
            }
        });
    }
}

 

 三、使用OkHttp访问网络

使用OkHttp向网络提交数据时,需要设计一个FormBody用来存储数据

 FormBody requestBody = new FormBody.Builder()
                            .add("username","admin")
                            .add("password","123456")
                            .build();

 其余的使用方法与http类似

①在Manifest中授权

②设置gradle引入okhttp

③.java代码

    private  void  SendRequest(){
        new Thread(new Runnable() {
            @Override
            public void run() {
                try{
                    OkHttpClient client=new OkHttpClient();
                  //  Log.d("TAG","1");
                    RequestBody requestBody=new FormBody.Builder()
//                            .add("name",str1)
//                            .add("carnumber",str3)
//                            .add("location",str4)
                            .add("name","111")
                            .add("carnumber","222")
                            .add("location","333")
                            .build();
                    Log.d("TAG","333");

                    Request request=new Request.Builder()
                            .url("http://192.168.1.134/parkmanage/user/setInfo.do")
//                            .url("https://www.baidu.com/")
                            .post(requestBody)
                            .build();

                   // Log.e("name","str1"+str1);
                    Log.d("TAG","444");
                    Response response=client.newCall(request).execute();
                    Log.d("TAG","555");
                    String responseData =response.body().string();
                    Log.d("BBB",responseData);
//                    showResponse(responseData);
                } catch (Exception e1) {
                    e1.printStackTrace();
                    Log.d("EEE","qiii");
                }
            }
        }).start();
}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值