安卓网络应用总结

一,TCP/IP协议通信

就是一种可靠的网络传输规则,所谓的可靠是指能够保证数据从一端无差错的传到另一端。TCP负责保证数据可靠传输,IP提供地址,定义两端。两个协议互补,协同工作。
大致就是在每一端都建立一个socket,两个socket直接传输数据。

1,服务器端的socket

服务器端就是首先主动提出接收其他端请求的一方,由ServerSocket类来负责。ServerSocket有3个构造方法:
ServerSocket(int port) port是申请绑定的服务器端端口,取值范围是0~65535.
ServerSocket(int port, int backlog) backlog是限制可以连入的客户端数量。
ServerSocket(int port, int backlog, InetAddress localAddr) 在机器上存在多个ip地址的情况,localAddr负责指定一个进行绑定。
ServerSocket类有一个 Socket accept() 方法用来接收客户端的请求。一般通过循环的方式 
ServerSocket ss = new ServerS(2000)
while(true)
    Socket s = ss.accept();

2, 客户端的socket

客户端用socket类负责,有2个构造方法:
Socket(InetAddress/Strng remoteAddress, int port) 连接到ip为remoteAddress,端口为port的服务器端。
Socket(InetAddress/String remoteAddress, int port, InetAddress localAddr, int localPort) 指定本地地址和端口的连接。

3,服务器端和客户端的通信

客户端new出socket对象后就和指定ip端口的服务器端连接起来了,服务器端就从accept()方法向下执行。

Socket类提供2个方法获取输入流和输出流:

InputStream getInputStream();

OutputStream getOutputStream();

获得这两个流以后就可以通过处理流进行处理了。

处理完可以用Socket类的close()方法关闭当前socket。

通常服务器端为每个客户端建立一个子线程,而客户端也建立一个线程用来接收数据,避免主线程堵塞。               

二,用URL访问网络资源

URL代表一个网址,格式为:

protocol://host:port/path?query#ref
path?query#ref 整体是filename

1,URL类

该类的大部分方法都用于对url地址的解析。如:
String getProtocal(); String getHost String getPath();  String getPort() String getFile(); String getQuery();
除此之外还有两个用来连接到指定URL的方法:
URLConnection openConnection(); 返回的对象表示到URL所引用的远程对象的连接,它的相关方法用来向URL发送请求。
InputStream openStream();

2,   URLConnction类

向URL发送请求的步骤如下:

1>通过URL实例的openConnection()方法返回一个URLConnection对象。

2>设置URLConnection的参数和普通请求属性。

可用通过如下方法设置请求头字段:

setAllowUserInteraction(); 【setDoInput(); setDoOutput();发送post请求必须设置这两个】 setIfModifiedSince(); setUseCaches(); 

可通过如下方法设置或增加通用的头字段:

setRequestProperty(String key, String value);

addRequestProperty(String key, String value);

3> 如果是GET方式的请求,那么调用该对象的connect()方法建立连接。如果是POST请求,则需要获取URLConnection实例对应的输出流来发送请求参数。

4>远程资源可用,可用访问远程资源投资端,或者通过输入流来获取数据。

   可通过以下方法访问头字段的内容:

Object getContent():获取该URLConnection的内容0

String getHeaderField(String name):获取指定响应头字段的值。

由于某些头字段的值需要经常访问,java提供如下方法:

getContentEncoding(); getContentLength(); getContentType(); getData(); getExpiration(); getLastModified();

getInputStream(); getOutputStream();获取对应的输入输出流。注意,如果需要同时使用输入输出流,一定要先使用输出流,在使用输入流。

3,使用HTTP访问网络

HttpURLConnection是URLConnection的子类,除了继承URLConnection的方法外,增加了一些便于操作HTTP资源的便捷方法,如下:

int getResponseCode();获取服务器的响应代码。

String getResponseMessage(); 获取服务器的响应信息。

String getRequestMethod(); 获取发送请求的方法。

void setRequestMethod(String method): 设置发送请求的方法。

4,Apache HttpClient

为了更好的处理向web页面发送的请求,就要使用增强版的HttpURLConnection,也就是HttpClient。这个类主要用来发送请求、接收响应,以及管理HTTP连接。

步骤如下:

1>创建HttpClient对象

new DefaultHttpClient()

2>如果发送GET请求,就创建HttpGet对象;如果发送POST请求,就创建HttpPost对象。

New HttpGet(“http网址”); new HttpPost(“http”);

3>调用HttpGet或者HttpPost共同的setParams(HttpParams params)方法添加请求参数;如果是HttpPost对象,还可以通过setEntity(HttpEntity entity)方法设置参数。

4>调用HttpClient对象的HttpResponse  execute(HttpUrlRequest request)发送请求。

5>调用HttpResponse对象的getAllHeaders()getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponsegetEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象的getContent()获取服务器的响应内容。

三,WebView

WebView就是一个普通的组件,可以用来浏览网页。在xml中配置和imageView类似。

java中提供如下方法:

void loadUrl(String url);加载指定URL对应的网页。

void goBack(); void goForward();后退前进。

boolean zoomIn(); boolean zoonOut(); 放大缩小。

两个方法用于加载HTML代码:

loadData(String data, String mimeType, String encoding);

loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl);

data:HTML代码。MimeType:指定HTML代码的MIME类型,HTML可以指定为text/html

encoding:指定HTML代码编码所用的字符集。比如GBKUTF-8

使用WebView中的JavaScript调用Android方法

步骤:

1>调用WebView关联的WebSettingssetJavaScriptEnabled(true)

Websettings getSettings();

2>调用WebViewaddJavaScriptInterface(Object object, String name)方法将object对象暴露给JavaScript

3>在JavaScript中可以通过调用name.方法名来调用object中的方法。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值