安卓连接服务器端的方式取决于业务需求,常见方式包括:
配置网络权限
在 AndroidManifest.xml
中声明网络权限:
<uses-permission android:name="android.permission.INTERNET" />
选择网络库
| 库名 | 特点 |
|————|———————————————————————-|
| OkHttp | 轻量级,支持同步/异步请求,可扩展拦截器。 |
| Retrofit | 基于OkHttp,通过注解生成API接口,适合RESTful服务。 |
| Volley | 谷歌出品,适合小数据量、快速开发(如图片加载)。 |
| WebSocket | 支持长连接,需配合 okhttp-ws
或第三方库(如 Socket.IO
)。 |
// 示例:使用OkHttp发送GET请求 OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("https://example.com/api/data") .build(); try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { String data = response.body().string(); // 处理数据 } } catch (IOException e) { e.printStackTrace(); }
// 示例:OkHttp异步请求 client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 处理失败(如网络错误) } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String data = response.body().string(); // 切换到主线程更新UI runOnUiThread(() -> { // 处理数据 }); } } });
// 定义API接口 public interface ApiService { @GET("api/data") Call<ResponseBody> getData(); } // 创建Retrofit实例 Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://example.com/") .addConverterFactory(GsonConverterFactory.create()) // 自动解析JSON .build(); // 发送请求 ApiService apiService = retrofit.create(ApiService.class); Call<ResponseBody> call = apiService.getData(); call.enqueue(new Callback<ResponseBody>() { @Override public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) { if (response.isSuccessful()) { // 直接获取解析后的对象 } } @Override public void onFailure(Call<ResponseBody> call, Throwable t) { // 处理失败 } });
JSON解析
Gson
、Moshi
或 Jackson
将JSON转换为对象。Gson gson = new Gson(); MyDataObject data = gson.fromJson(jsonString, MyDataObject.class);
XML解析
XmlPullParser
或第三方库(如 SimpleXML
)。HTTPS强制验证
OkHttpClient
中启用证书验证: OkHttpClient client = new OkHttpClient.Builder() .sslSocketFactory(SSLContext.getDefault().getSocketFactory(), trustManager) .build();
超时设置
OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .build();
缓存策略
Cache-Control
头或 OkHttp
的缓存功能。解答:
Log.d
)。 json-server
或 Mocky
快速搭建临时API。解答:
DownloadManager
或第三方库(如 Aria2
)实现多线程