Java 如何在volly课堂外检索volly应答者的应答
我正在为我的大学做一个项目。我的android应用程序需要与服务器通信才能发送命令并接收一些数据。我能够发送和接收数据。问题是,当我想将该数据打印到volly类之外时,没有可用的接收数据Java 如何在volly课堂外检索volly应答者的应答,java,android,android-volley,Java,Android,Android Volley,我正在为我的大学做一个项目。我的android应用程序需要与服务器通信才能发送命令并接收一些数据。我能够发送和接收数据。问题是,当我想将该数据打印到volly类之外时,没有可用的接收数据 final RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this); StringRequest stringRequest = new StringRequest(Request.Method.GET, ser
final RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, server_url += "/?data="+ enteredUsername.getText().toString()+","+ enteredPassword.getText().toString()+","+enteredSiteId.getText().toString(),
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
returnFromServer =response.toString();
requestQueue.stop();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
commandStatus.setText("SERVER DOWN");
error.printStackTrace();
requestQueue.stop();
}
});
requestQueue.add(stringRequest);
commandStatus.setText(returnFromServer);//there is no value here out side the volly class
}
final RequestQueue RequestQueue=Volley.newRequestQueue(MainActivity.this);
StringRequest StringRequest=new StringRequest(Request.Method.GET,server_url++=“/?data=“+enteredUsername.getText().toString()+”,“+enteredPassword.getText().toString()+”,“+enteredSiteId.getText().toString(),”,
新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
returnFromServer=response.toString();
requestQueue.stop();
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
commandStatus.setText(“服务器关闭”);
错误。printStackTrace();
requestQueue.stop();
}
});
添加(stringRequest);
commandStatus.setText(returnFromServer)//在volly类之外没有任何价值
}
我必须比较服务器返回的值,以便进一步使用。在类中创建一个ResponseListener对象,如下所示:
Response.Listener<String> response = new Response.Listener<String>(){
@Override
public void onResponse(String response) {
returnFromServer =response.toString();
requestQueue.stop();
}
};
Response.Listener Response=newresponse.Listener(){
@凌驾
公共void onResponse(字符串响应){
returnFromServer=response.toString();
requestQueue.stop();
}
};
然后让听者截击:
public void yourMethod(){
....
callApi(response)
....
}
public void callAPI(Response.Listener<String> response) {
StringRequest stringRequest = new StringRequest(Request.Method.GET, server_url += "/?data="+ enteredUsername.getText().toString()+","+ enteredPassword.getText().toString()+","+enteredSiteId.getText().toString(),
response,
new Response.ErrorListener(){...}
}
public方法(){
....
callApi(响应)
....
}
public void callAPI(Response.Listener Response){
StringRequest StringRequest=new StringRequest(Request.Method.GET,server_url++=“/?data=“+enteredUsername.getText().toString()+”,“+enteredPassword.getText().toString()+”,“+enteredSiteId.getText().toString(),”,
答复,,
新响应。ErrorListener(){…}
}
实施
public class MainActivity extends Activity{
Response.Listener<String> response = new Response.Listener<String>() {
@Override
public void onResponse(String response) {
returnFromServer =response.toString();
requestQueue.stop();
}
};
private void callAPI(Response.Listener<String> respone) {
final RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
StringRequest stringRequest = new StringRequest(Request.Method.GET, server_url += "/?data="+ enteredUsername.getText().toString()+","+ enteredPassword.getText().toString()+","+enteredSiteId.getText().toString(),
response,
, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
commandStatus.setText("SERVER DOWN");
error.printStackTrace();
requestQueue.stop();
}
});
requestQueue.add(stringRequest);
commandStatus.setText(returnFromServer);//there is no value here out side the volly class
}
}
}
公共类MainActivity扩展活动{
Response.Listener Response=新的Response.Listener(){
@凌驾
公共void onResponse(字符串响应){
returnFromServer=response.toString();
requestQueue.stop();
}
};
私有void调用API(Response.Listener respone){
final RequestQueue RequestQueue=Volley.newRequestQueue(MainActivity.this);
StringRequest StringRequest=new StringRequest(Request.Method.GET,server_url++=“/?data=“+enteredUsername.getText().toString()+”,“+enteredPassword.getText().toString()+”,“+enteredSiteId.getText().toString(),”,
答复,,
,new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
commandStatus.setText(“服务器关闭”);
错误。printStackTrace();
requestQueue.stop();
}
});
添加(stringRequest);
commandStatus.setText(returnFromServer);//在volly类之外没有任何值
}
}
}
只要在任何地方调用callAPI方法,并将响应作为参数传递。如果从服务器接收到响应,则调用MainActivity中的onResponse方法
this
@SojibAhmed我更新了我的答案,但如果您想要更多的实现,请首先查看java中的接口设计模式,以了解接口和回调是如何工作的。