gpt4 book ai didi

android - 每次在 volley 中击中 api 时显示响应

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:30:33 25 4
gpt4 key购买 nike

我需要根据数组列表大小获得近 8 倍的响应(动态)。所以我使用了 for 循环。在 for 循环中,我正在使用 volley get response。

每次访问 api 时,我都需要获得 onResponse。

下面贴出了logcat和相关代码:

Logcat:(已编辑)

 E/getAvaArrStr: 
E/urlAva:

E/getAvaArrStr:
E/urlAva:

E/getAvaArrStr:
E/urlAva:

E/getAvaArrStr:
E/urlAva:

E/getAvaArrStr:
E/urlAva:

/* Response */

E/ResponseAvatar:
E/url:
E/CheckArrBit:

E/ResponseAvatar:
E/url:
E/CheckArrBit:

E/ResponseAvatar:
E/url:
E/CheckArrBit:

E/ResponseAvatar:
E/url:
E/CheckArrBit:

CardsFragment.java:(已编辑)

RequestQueue queue = Volley.newRequestQueue(getActivity());

for (int i = 0; i < alAvaArr.size(); i++) {

getAvaArrStr = alAvaArr.get(i);

Log.e("getAvaArrStr", "" + getAvaArrStr);

urlAva = BurblrUtils.BR_AVATAR_IMAGE + getAvaArrStr + "&android=1";

Log.e("urlAva", urlAva);


requestAva = new StringRequest(Request.Method.GET, urlAva, new Response.Listener<String>() {

@Override
public void onResponse(String response) {
if (response != null && !response.startsWith("<HTML>")) {
Log.e("ResponseAvatar", response);

dialog.dismiss();

try {

Toast.makeText(getActivity(), "Running ", Toast.LENGTH_SHORT).show();

String url = response.replace("\\", "");
url = url.replace("\"", "");

Log.e("url", url);

arrBitMap.add(url);

Log.e("CheckArrBit", "" + arrBitMap);

// Glide.with(getActivity()).load(url).placeholder(R.drawable.ic_launcher).error(R.drawable.ic_launcher).into(img);


getSwipeImage();

myAppAdapter.notifyDataSetChanged();

} catch (Exception e) {
e.printStackTrace();
dialog.dismiss();
}

} else {
dialog.dismiss();
}
}
}, new Response.ErrorListener() {

@Override
public void onErrorResponse(VolleyError error) {
if (error != null) {
Log.e("error", error.toString());
dialog.dismiss();
}

}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();

params.put("file", getAvaArrStr);

Log.e("paramsImg", "" + params);

Log.e("RunningParams", "Testing");


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

queue.add(requestAva);

queue.getCache().remove(urlAva);

}

预期的日志响应序列:

E/getAvaArrStr: -> E/urlAva: -> E/ResponseAvatar: -> E/url: -> E/CheckArrBit:

每次运行循环我都需要得到响应。这意味着将近 8 次,根据 arrayList 的大小,我必须得到响应消息,这是否可能在 volley 中?任何解决这个问题的建议。

最佳答案

您正在 for 循环中创建 RequestQueue...

所以没有Call Queue...把它移出for循环

RequestQueue queue = Volley.newRequestQueue(getActivity());
for(..){
...
queue.add(requestAva);
}

关于android - 每次在 volley 中击中 api 时显示响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36215027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com