HTTP POST请求作为另一个Java类-Android Studio

Somesh SS:

我对Android Studio,Java和Stack Overflow完全陌生。我的应用程序使用Volley执行了许多HTTP Post请求,因此,我用代码执行了独立的Java类来执行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","[email protected]");
    credentials.put("password","cityslicka");
    HTTPReq httpReq = new HTTPReq();
    String response = httpReq.postRequest(credentials,context);
    Toast.makeText(context, "1" + response, Toast.LENGTH_LONG).show();
}

我希望很清楚我要实现的目标。请帮我解决一下这个。

Javad Dehban:

您的使用功能界面

   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);

    }
}

calss界面:

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", "[email protected]");
    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);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

无法从 Java Android Studio 中的另一个类调用变量

如何在Android Studio [Kotlin]中的另一个类中的一个类中运行函数?

Android Studio 没有使用另一个类创建对象

如何从Android Studio中的另一个模块导入类?

如何从Android Studio 2.0 beta 5中的另一个模块导入类?

Android Studio:文件写入另一个目录

NullPointerException转到另一个活动,Android Studio

无法从一个类到另一个类获取一个int值:Android Studio

Java 方法返回无法与另一个 int 进行比较的 int (Android Studio)

Android Studio:如何将变量从一个Java文件保存到另一个文件

在IntelliJ或Android Studio中进行重构时,如何将静态变量从一个类移动到另一个类?

通过 Android Studio 上的 Intent 将变量“date”传递给另一个类,NULL OBJECT REFERENCE

Android Studio ImageButton从一个图像更改为另一个图像

Android Studio Java类有一个下拉列表

如何在 Android Studio 中使用 HTTP POST

Android,Java:HTTP POST请求

在android java中将一个类的方法调用到另一个类?

如何在POST请求的HTTP字段中添加另一个值?

TextEdit 值被传递给另一个活动,但当重新访问下一个活动时,使用 JAVA 的 Android Studio 值会丢失

在 android studio 的另一个活动中访问表视图中的数据

使用Kotlin将多个值传递给Android Studio中的另一个Activity

如何进入“片段”中的另一个活动。Android Studio

Android Studio在运行新应用时会删除另一个应用

Android Studio使用另一个AAR文件和内部的jar创建AAR

无法从Android Studio中的片段启动另一个活动

Dock 上的 .desktop 文件在 unity/android studio 的另一个实例中打开

在Android Studio中从活动转移到另一个时加载

如何从Android Studio中的另一个模块使用@Pointcut方法?

尝试从Android Studio 3.5.3中的另一个片段打开片段