博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android——网络编程
阅读量:3917 次
发布时间:2019-05-23

本文共 3791 字,大约阅读时间需要 12 分钟。

Android——网络编程

网络编程主要是在手机端使用 HTTP 协议和服务器端进行网络交互,并对服务器返回的数据进行解析,也是 Android 中最常使用到的网络技术了,

WebView的用法

提供了一个 WebView 控件,借助它我们就可以在自己的应用程序里嵌入一个浏览器,从而非常轻松地展示各种各样的网页。 在布局文件中加入一个WebView控件。

设置一个id,并让他充满整个屏幕。

public class MainActivity extends Activity {
private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = (WebView) findViewById(R.id.web_view); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient() {
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 根据传入的参数再去加载新的网页 view.loadUrl(url); // 表示当前WebView可以处理打开新网页的请求,不用借助系统浏览器 return true; } }); webView.loadUrl("http://www.baidu.com"); }}

WebView 的 getSettings()方法可以去设置一些浏览器的属性 ,调用了 setJavaScriptEnabled()方法来让 WebView 支持 JavaScript 脚本。 调用 WebView 的 setWebViewClient()方法,并传入了 WebViewClient 的匿名类作为参数,然后重写了 shouldOverrideUrlLoading()方法。这就表明当需要从一个网页跳转到另一个网页时,我们希望目标网页仍然在当前 WebView 中显示,而不是打开系统浏览器。调用 WebView 的 loadUrl()方法,并将网址传入,即可展示相应网页的内容

由于使用到网络内容,而访问网络是需要声明权限的,因此我们还需要修改AndroidManifest.xml 文件,并加入权限声明。

使用HTTP协议访问网络

工作原理,就是客户端向服务器发出一条HTTP 请求,服务器收到请求之后返回一些数据给客户端,然后客户端再对这些数据进行解析和处理。

在Android上发送HTTP请求的方式一般有两种,HttpURLConnection 和 HttpClient(接口)。

  1. 使用HttpURLConnection

获取实例:只需要New出一个URL对象,并传入目标的网路地址。然后调用一下openConnection()方法即可 。

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

设置请求的方式GET / POST

connection.setRequestMethod("GET");

可以进行一些自由的定制,如设置连接超时,读取超时的毫秒数等等。

connection.setConnectTimeout(8000);    // 连接超时时间connection.setReadTimeout(8000);    // 读取超时时间

获取服务器返回的输入流

InputStream in = connection.getInputStream();

关闭HTTP连接

connection.disconnect();
实例:
private void sendRequestWithHttpURLConnection() {
// 开启线程来发起网络请求,在线程中进行网络请求 new Thread(new Runnable() {
@Override public void run() {
HttpURLConnection connection = null; try {
URL url = new URL("http://www.baidu.com"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(8000); connection.setReadTimeout(8000); connection.setDoInput(true); connection.setDoOutput(true); InputStream in = connection.getInputStream(); // 下面对获取到的输入流进行读取 BufferedReader reader = new BufferedReader( new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) {
response.append(line); } Message message = new Message(); message.what = SHOW_RESPONSE; // 将服务器返回的结果存放到Message中 message.obj = response.toString(); handler.sendMessage(message); } catch (Exception e) {
e.printStackTrace(); } finally {
if (connection != null) {
connection.disconnect(); } } } }).start(); }
  1. 使用 HttpClient (接口)

它可以完成和 HttpURLConnection 几乎一模一样的效果,但两者之间的用法却有较大的差别。HttpClient ()是一个接口,无法创建它的实例,通常会创建一个DefaultHttpClient 的实例 。

HttpClient httpClient = new DefaultHttpClient();

要发起一条GET请求,可以创建一个HttpGet对象,并传入目标网络地址。然后调用HttpClient 的 execute()方法即可 。

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

发起Post请求会比较复杂。要创建一个HttpPost对象,并传入目标网络地址。

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

然后通过NameValuePair集合来存放待提交的参数,并将集合传入到一个UrlEncodedFormEntity 中,然后调用 HttpPost 的 setEntity()方法将构建好的 UrlEncodedFormEntity传入,

List
params = new ArrayList
();params.add(new BasicNameValuePair("username", "admin"));params.add(new BasicNameValuePair("password", "123456"));UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");httpPost.setEntity(entity);

太难了 不写了!!!!!!!!!!!!!!

转载地址:http://nhirn.baihongyu.com/

你可能感兴趣的文章
用了Dapper之后通篇还是SqlConnection,真的看不下去了
查看>>
ABP快速开发一个.NET Core电商平台
查看>>
[NewLife.Net]单机400万长连接压力测试
查看>>
使用Azure人脸API对图片进行人脸识别
查看>>
快醒醒,C# 9 中又来了一堆关键词 init,record,with
查看>>
【招聘(深圳)】轻岁 诚聘.NET Core开发
查看>>
await,async 我要把它翻个底朝天,这回你总该明白了吧
查看>>
.NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中
查看>>
使用Jenkins来发布和代理.NetCore项目
查看>>
欢迎来到 C# 9.0(Welcome to C# 9.0)
查看>>
Dapr微服务应用开发系列1:环境配置
查看>>
使用 Visual Studio 2019 批量添加代码文件头
查看>>
【BCVP更新】StackExchange.Redis 的异步开发方式
查看>>
Istio 1.7——进击的追风少年
查看>>
.NET5.0 Preview 8 开箱教程
查看>>
efcore技巧贴-也许有你不知道的使用技巧
查看>>
真・WPF 按钮拖动和调整大小
查看>>
做权限认证,还不了解IdentityServer4?不二话,赶紧拥抱吧,.NET Core官方推荐!...
查看>>
MongoDB最新4.2.7版本三分片集群修改IP实操演练
查看>>
编写第一个 .NET 微服务
查看>>