public static void communicate(final Context context, String url, final String typeResponse, final Intent intent) {
RequestQueue queue = Volley.newRequestQueue(context);
RequestFuture<String> future = RequestFuture.newFuture();
StringRequest stringRequest = new StringRequest(Request.Method.POST, BASE_URL + url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
Bundle bundle = new Bundle();
switch (typeResponse) {
case "text":
bundle.putString("response", response);
break;
case "json":
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray names = jsonObject.names();
for (int i = 0; i < names.length(); i++) {
//Toast.makeText(context, names.getString(i), Toast.LENGTH_SHORT).show();
bundle.putString(names.getString(i), jsonObject.getString(names.getString(i)));
}
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
intent.putExtras(bundle);
context.startActivity(intent);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "error", Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("test", "hi!!");
return params;
}
};
queue.add(stringRequest);
}
Bundle myBundle = communicate('httl://qwe.asd', 'json')
谢了。
Volley请求是异步的,所以我建议你把你的onResponse其他函数放在里面来处理你的bundle。此外,您还可以创建一个接口,以便在其他地方发送响应。像这样的东西
接口
public interface onResponseCallback {
void onResponse(Bundle bundle);
}
活动性
public MyActivity extends AppCompatActivity implements onResponseCallback{
public void onCreate(Bundle....){
MyRequest myrequest = new MyRequest(this);
..}
public void onResponse(Bundle bundle){
//bundle argument is your response from request,
// do some with your response
Intent intent = new Intent....
intent.putExtras(bundle);
startActivity(intent);
}
}
public class MyRequest{
OnResponseCallback onResponseCallback= null;
public MyRequest(onResponseCallback onResponseCallback)
this.onResponseCallback = onResponseCallback;
}
public void communicate(final Context context, String url, final String typeResponse, final Intent intent) {
RequestQueue queue = Volley.newRequestQueue(context);
RequestFuture<String> future = RequestFuture.newFuture();
StringRequest stringRequest = new StringRequest(Request.Method.POST, BASE_URL + url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//Toast.makeText(context, response, Toast.LENGTH_SHORT).show();
Bundle bundle = new Bundle();
switch (typeResponse) {
case "text":
bundle.putString("response", response);
break;
case "json":
try {
JSONObject jsonObject = new JSONObject(response);
JSONArray names = jsonObject.names();
for (int i = 0; i < names.length(); i++) {
//Toast.makeText(context, names.getString(i), Toast.LENGTH_SHORT).show();
bundle.putString(names.getString(i), jsonObject.getString(names.getString(i)));
}
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
onResponseCallback.onResponse(bundle);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(context, "error", Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("test", "hi!!");
return params;
}
};
queue.add(stringRequest);
}
}
我想在我的代码中使用Volley,我应该在下面的响应中使用哪种请求类型,我不明白。URL:::http://localhost/api/product/read.php
当我在android截击请求的OneErrorRepsonse中收到错误时,我想重试该请求。我怎样才能做到这一点?
我正在使用截击来管理我的应用程序。有时,当响应很大时,我会在没有太多RAM的设备上获得OOM。我不确定如何解决这个问题。我知道Volley会将其响应存储在内存中,但我的应用程序太多地围绕着Volley,切换起来会很痛苦。我在使用改装时也遇到了问题。我尝试过使用JsonReader,但它似乎仍在发生。我有一个用于截击的自定义请求。它返回一个Gson JsonObject。这是我目前的代码,当响应数据
问题内容: 我正在寻找一种方法来返回我在loopJ AsyncHttpClient onFinish或onSuccess或onFailure中得到的响应。截至目前,我有这段代码: 当我调用代码时: 在onSuccess或onFailure方法完成http发布之前,我得到了 JSONException 。 我注意到,在第一次调用时:Log.e(“ Exception”,“ JSONException
我正在寻找一种方法来返回我在loopJ、AsyncHttpClient、onFinish或onSuccess或onfailure中得到的响应。到现在为止,我有这段代码: 我注意到,在第一次调用时:log.e(“exception”,“jsonexception”+e.toString());正在进行日志记录,然后是log.d(“onSuccess:”,jsonString);当它们处于同步状态时记
我正在使用截击与API交互。我需要向返回JSON数组的服务发送post请求(带参数)。 我的Api代码有这样一个功能: 公共函数添加($tripData){ 我只需要把params放进去。将(“数据”,数据)放入以下类型的数组中: 所以它可以用作:$obj=new Myclass;$var=$ob- 自动生成方法存根