适用场景:RESTful API调用、文件下载、提交表单等。
常用库:OkHttp、Retrofit、Volley。
步骤 | 说明 | 代码示例(OkHttp) |
---|---|---|
添加网络权限 | 在AndroidManifest.xml 中声明INTERNET 权限。 | xml <uses-permission android:name="android.permission.INTERNET" /> |
检查网络状态 | 避免因无网络导致崩溃。 | java ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); boolean connected = cm.getActiveNetworkInfo() != null; |
创建请求 | 同步/异步请求,推荐异步避免阻塞主线程。 | java OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url("https://example.com/api").build(); client.newCall(request).enqueue(new Callback() { ... }); |
处理响应 | 解析JSON/XML或处理流数据。 | java @Override public void onResponse(Call call, Response response) { if (response.isSuccessful()) { String body = response.body().string(); // 解析数据 } } |
适用场景:实时聊天、股票行情、游戏等需要持续通信的场景。
常用库:OkHttp WebSocket、Socket.IO。
步骤 | 说明 | 代码示例(OkHttp) |
---|---|---|
建立连接 | 通过Request 创建WebSocket。 | “`java Request request = new Request.Builder().url(“wss://example.com/socket”).build(); WebSocket ws = client.newWebSocket(request, new WebSocketListener() { … }); |
收发消息 | 监听onMessage 事件并发送数据。 | java @Override public void onMessage(WebSocket webSocket, String text) { webSocket.send("回应: " + text); } |
断线重连 | 监听onFailure 并尝试重连。 | java @Override public void onFailure(WebSocket webSocket, Throwable t, Response response) { // 延迟重连 } |
适用场景:自定义协议传输、局域网通信、文件传输。
注意:需处理线程和IO流。
步骤 | 说明 | 代码示例(TCP) |
---|---|---|
创建Socket | 指定服务器IP和端口。 | java Socket socket = new Socket("192.168.1.1", 8080); |
发送数据 | 通过OutputStream 写入数据。 | java PrintWriter out = new PrintWriter(socket.getOutputStream()); out.println("Hello Server"); out.flush(); |
接收数据 | 通过InputStream 读取响应。 | java BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); String response = in.readLine(); |
关闭连接 | 释放资源。 | java socket.close(); |
AndroidManifest
中的网络权限。ConnectivityManager
确认网络状态。client.setConnectTimeout(10, TimeUnit.SECONDS);
。java client.sslSocketFactory(new SSLContext().getSocketFactory(), trustManager);
解答:
OkHttp
的缓存机制或第三方库(如Glide
)。ExecutorService
或协程。解答:
OkHttp
的ProgressResponseBody
或Retrofit
的Callback
监控上传进度。Service
或WorkManager
中执行上传任务,避免Activity被回收导致