Android AndBase框架使用封装好的函数完成Http请求(三)

【标题】

【标题】

Android AndBase框架使用封装好的函数完成Http请求(三)完整攻略

【内容】

本文介绍如何使用AndBase框架中封装好的函数完成Http请求,包括GET请求、POST请求和文件上传等。具体实现过程如下:

  1. 添加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'
}
  1. 创建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请求的操作。

  1. 调用封装好的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. 示例说明

示例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请求(三)

基础教程推荐