HTTP POST 作为不同的请求 Java Class - Android Studio

HTTP POST Request as a different Java Class - Android Studio

我完全是 Android Studio、Java 和 Stack Overflow 的菜鸟。我的应用程序使用 Volley 执行大量 HTTP Post 请求,因此我使用代码创建了一个独立的 Java class 来执行 post 请求。

public class HTTPReq {
    String[] finalResponse = new String[1];
    public String postRequest(final  HashMap<String,String> params, final Context context) {
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        String url = "https://reqres.in/api/login";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                finalResponse[0] = response;
                Toast.makeText(context, "2" + finalResponse[0], Toast.LENGTH_LONG).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                finalResponse[1] = error.getMessage();
                //Toast.makeText(context, "Response Failed", Toast.LENGTH_LONG).show();
            }
        }) {
            @Override
            protected Map<String, String> getParams() {
                return params;
            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("Content-Type", "application/x-www-form-urlencoded");
                return params;
            }
        };
        requestQueue.add(stringRequest);
        Toast.makeText(context, "3" + finalResponse[0], Toast.LENGTH_LONG).show();
        return finalResponse[0];
    }
}

我想要实现的是使用 return 获取 http 请求对函数调用的响应。 函数调用如下:

public void login(String phno, String password,Context context)
{
    HashMap<String,String> credentials = new HashMap<String, String>();
    credentials.put("email","eve.holt@reqres.in");
    credentials.put("password","cityslicka");
    HTTPReq httpReq = new HTTPReq();
    String response = httpReq.postRequest(credentials,context);
    Toast.makeText(context, "1" + response, Toast.LENGTH_LONG).show();
}

我希望大家清楚我要实现的目标。请帮我解决这个问题。

您的常用功能界面

   public class HTTPReq {
    public void postRequest(final HashMap<String, String> params, final Context context, final ResponseCallBack callBack) {
        RequestQueue requestQueue = Volley.newRequestQueue(context);
        String url = "https://reqres.in/api/login";
        StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                callBack.onResponse(response);
                Toast.makeText(context, response, Toast.LENGTH_LONG).show();

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                callBack.onError(error);
                Toast.makeText(context, "Response Failed", Toast.LENGTH_LONG).show();
            }
        }) {
            @Override
            protected Map<String, String> getParams() {
                return params;
            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();
                params.put("Content-Type", "application/x-www-form-urlencoded");
                return params;
            }
        };

        requestQueue.add(stringRequest);

    }
}

类接口:

import com.android.volley.VolleyError;

public interface ResponseCallBack<T> {
        public void onResponse(T response);

        public void onError(VolleyError error_response);


}

主要活动:

public class MainActivity extends AppCompatActivity implements ResponseCallBack {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    HTTPReq httpReq = new HTTPReq();
    HashMap<String, String> credentials = new HashMap<String, String>();
    credentials.put("email", "eve.holt@reqres.in");
    credentials.put("password", "cityslicka");

    httpReq.postRequest(credentials, this, this);

}

@Override
public void onResponse(Object response) {
    Log.e("TAG", "onResponse: " + response);
}

@Override
public void onError(VolleyError error_response) {

    Log.e("TAG", "onError: " + error_response);
}