【标题】
Android AndBase框架使用封装好的函数完成Http请求(三)完整攻略
【内容】
本文介绍如何使用AndBase框架中封装好的函数完成Http请求,包括GET请求、POST请求和文件上传等。具体实现过程如下:
- 添加AndBase框架依赖库
在项目的build.gradle文件中添加AndBase的依赖库:
dependencies {
implementation 'org.apache.httpcomponents:httpclient-android:4.3.5.1'
implementation 'com.android.support:appcompat-v7:XXX'
implementation 'com.android.support:support-v4:XXX'
implementation 'org.litepal.android:core:1.7.0'
//AndBase依赖库
implementation 'com.ab.view:ab-view:1.6.2'
}
- 创建BaseActivity类,封装Http请求函数
创建BaseActivity类,并添加以下函数:
// GET请求
public String httpGet(String url) {
return AbHttpUtil.getInstance(this).get(url);
}
// POST请求
public String httpPost(String url, Map<String, String> params) {
return AbHttpUtil.getInstance(this).post(url, params);
}
// 上传文件
public String uploadFile(String url, Map<String, String> params, String filePath) {
return AbHttpUtil.getInstance(this).postFile(url, params, filePath);
}
这里使用了AndBase框架中的AbHttpUtil类,简化了Http请求的操作。
- 调用封装好的Http请求函数
在需要进行Http请求的Activity中,继承BaseActivity,并调用上述封装好的函数即可完成Http请求。
例如,以下代码是在MainActivity中发送GET请求:
public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url = "http://www.example.com/api/test";
String result = httpGet(url);
Log.i("MainActivity", "GET请求返回结果:" + result);
}
}
- 示例说明
示例1:在用户登录时发送POST请求,验证登录信息是否正确
public class LoginActivity extends BaseActivity {
private EditText etUsername, etPassword;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
etUsername = findViewById(R.id.et_username);
etPassword = findViewById(R.id.et_password);
findViewById(R.id.btn_login).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
// 发送POST请求验证登录信息
String url = "http://www.example.com/api/login";
Map<String, String> params = new HashMap<>();
params.put("username", username);
params.put("password", password);
String result = httpPost(url, params);
if (result.equals("1")) {
// 登录成功
Toast.makeText(LoginActivity.this, "登录成功!", Toast.LENGTH_SHORT).show();
} else {
// 登录失败
Toast.makeText(LoginActivity.this, "用户名或密码错误!", Toast.LENGTH_SHORT).show();
}
}
});
}
}
示例2:上传图片文件
public class UploadActivity extends BaseActivity {
private ImageView ivImage;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_upload);
ivImage = findViewById(R.id.iv_image);
findViewById(R.id.btn_upload).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 打开相册选择图片
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode ==.RESULT_OK && data != null) {
// 获取选择的图片文件路径
String imagePath = FileUtils.getPath(this, data.getData());
// 显示选择的图片
ivImage.setImageBitmap(BitmapFactory.decodeFile(imagePath));
// 上传图片文件
String url = "http://www.example.com/api/upload";
Map<String, String> params = new HashMap<>();
params.put("username", "example");
params.put("password", "123456");
String result = uploadFile(url, params, imagePath);
if (result.equals("1")) {
// 上传成功
Toast.makeText(UploadActivity.this, "上传成功!", Toast.LENGTH_SHORT).show();
} else {
// 上传失败
Toast.makeText(UploadActivity.this, "上传失败!", Toast.LENGTH_SHORT).show();
}
}
}
}
以上两个示例分别演示了POST请求和文件上传的使用方法。
【结论】
使用AndBase框架封装好的Http请求函数,可以简化Http请求的操作。具体实现方法是:创建BaseActivity类,并封装Http请求函数;继承BaseActivity的Activity中调用封装好的函数即可完成Http请求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android AndBase框架使用封装好的函数完成Http请求(三) - Python技术站