我正在使用齐射库并在XML中获得响应.我想知道如何使用/ volley库解析响应.谢谢.
我正在尝试使用一些遗留代码,并在使用凌空时遇到问题.
我试图找到我们的主站点的API,它适用于一个帐户,但不适用于另一个帐户.我正在尝试弄清楚请求URL /标题中的差异以及响应中的内容,但我似乎无法在排序代码中找到将其打印到日志中的方法.
我得到的错误是
com.android.volley.NoConnectionError: java.io.IOException: No authentication challenges found
Run Code Online (Sandbox Code Playgroud)
我已经读到这可能是由于401响应,但我真的不知道这意味着什么,或者至少如何证明/测试它.我真的很困惑,它适用于一个帐户而不是另一个帐户.
网址略有不同,一个是我们的英国网站,另一个是我们的AM,但除此之外没有区别.
谢谢
我决定尝试一下Volley,所以目前我有很多REST标注要做,所以我通常会创建一个RequestHandler和一个ResponseHandler类,它们的名字分别建议处理请求和响应.我遵循这种模式,所以我不写冗余代码.我只是将动态查询/ url作为参数传递,并使用switch case处理对每个请求的响应.但我坚持以下问题:
我无法从我调用RequestHandler类的地方更新我的UI线程.到目前为止我尝试或已经知道的事情:
我在想,你们是怎么做到的?有没有比我遵循的请求/响应处理程序模式更好的模式?有没有更新UI线程遵循相同模式的方法?
提前致谢 !
我想问一下使用Volley时如何获取状态代码.
我有以下代码:
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Here I want to get status code
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
)
Run Code Online (Sandbox Code Playgroud)
可能吗 ?如果没有,为什么?
在我的Android应用程序中,我正在使用Volley加载json数据JsonArrayRequest.数据是由我自己创建的,我用Sublime用UTF-8编码保存它们.当我得到Response并填充我的时ListView,文本显示不正确(变音符号).这是我的请求的样子:
JsonArrayRequest request = new JsonArrayRequest(targetUrl,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(final JSONArray response) {
try {
fillList(response);
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
requestQueue.add(request);
Run Code Online (Sandbox Code Playgroud)
当我使用此方法加载完全相同的数据时,所有文本都正确显示:
final StringBuilder builder = new StringBuilder();
final HttpClient client = new DefaultHttpClient();
final HttpGet httpGet = new HttpGet(request);
try {
final HttpResponse response = client.execute(httpGet);
final StatusLine statusLine = response.getStatusLine();
int statusCode = …Run Code Online (Sandbox Code Playgroud) 我想使用POST方法将JSONObject发送到服务器.我已经使用volley库传递字符串params它的工作正常,但如果我尝试使用json对象,它显示错误调用json对象这里是我的代码
private void makeJsonObjReq() {
showProgressDialog();
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST,
Const.URL_LOGIN, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d(TAG, response.toString());
msgResponse.setText(response.toString());
hideProgressDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
hideProgressDialog();
}
}) {
/**
* Passing some request headers
* */
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("Content-Type", "application/json; charset=utf-8");
return headers;
}
@Override
protected Map<String, String> getParams() …Run Code Online (Sandbox Code Playgroud) 我需要发布JSONObject(使用Volley)一个以JSONArray格式返回响应的Web服务.
这是我到目前为止所尝试的.
final JSONObject requestJsonObject = new JSONObject();
requestJsonObject.put("username", userName);
requestJsonObject.put("password", password);
JsonObjectRequest jsonObjReq = new JsonObjectRequest(Method.POST, ServiceUrls.LOGIN_URL, requestJsonObject, loginResponseListener, loginErrorListener);
private Listener<JSONObject> loginResponseListener = new Listener<JSONObject>() {
@Override
public void onResponse(JSONObject resposne) {
//other stuff goes here
}
};
Run Code Online (Sandbox Code Playgroud)
但我JSONException要说的是JSONArray无法转换为JSONObject.有没有办法以JSONArray格式获得响应?什么是我的问题的最佳解决方案?JSONObject如果我使用StringRequest而不是,我该如何发送JsonObjectRequest?请指导我
在我的一个应用程序中,我使用Googlevolley提供的服务器发送请求.
问题:超时和错误对象为空 onErrorResponse(VolleyError error)
到目前为止我尝试了什么:
1)首先我得到了null错误对象,所以使用下面的代码解决了它:
@Override
protected void deliverResponse(String response) {
super.deliverResponse(response);
}
@Override
public void deliverError(VolleyError error) {
super.deliverError(error);
DebugLog.e("deliverResponse", "getNetworkTimeMs : " + error.getNetworkTimeMs());
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我得到了timeout当我得到错误对象时发生的事情null.
2)现在的应用是Android和iOS和web,但timeout只针对发生Android.
要求的排球日志:
BasicNetwork.logSlowRequests: HTTP response for request
Run Code Online (Sandbox Code Playgroud)
编辑说明:
在服务器端开发的Web服务对于所有三个实例(Android,Web和iOS)都是相同的.
Timeout 当有太多用户向服务器发出请求时发生.
我已经设定了2分钟的时间,但有时只有30秒的凌空抽射超时.
我有很多答案来改变服务器,但因为它是不可能所以任何其他解决方案请.
我还想补充一点,如果我能获得更多关于何时可以超时的超时的信息?
参考文献我经历过:
HttpClient的,经常超时的-使用-WiFi的是持续的,细带-3G
long_xmlhttprequest_ajax_requests_timeout_on_android
编辑:
我还设置了重试政策如下:
request.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 48,
0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
Run Code Online (Sandbox Code Playgroud)
而且我也不想在连接超时时重试.
如何才能进行有效的服务调用,以解决问题timeout.
任何帮助都会得到满足.
谢谢.
我是android studio和volley library的新手,所以请耐心等待.
我已经通过GitHub添加了volley库,然后添加了这一行来构建gradle文件:compile'com.android.support:appcompat-v7:23.0.1'
现在我正在尝试一些关于来自api的请求和响应的教程,但由于某种原因我不能创建RequestQueue的实例为什么?我正在使用Android 4.0.3 IceCreamSandwish
谢谢
我有一个登录屏幕,成功登录后,它会完成并显示另一个包含用户信息的页面。
我读过这篇文章和这篇文章。
我还阅读了很多关于我们如何扩展 Application 类的内容,但我仍然无法运行此代码。
您可以在下面找到我的代码,我也会解释错误。
这就是我使用 Volley 调用 AsyncTask 的方式:
错误就像no activity for token android.os.BinderProxy我调用startActivity(intent);.
我知道这个错误是因为活动被杀死了,而 Volley 响应之后的 AsyncTask 想要使用被杀死的上下文,但我不知道如何修复它。
Util.request_function(
activity,
MainActivity.user_session,
key_value,
new VolleyCallback() {
@Override
public void onSuccess(JSONObject result, Context context) {
Activity activity =
MyBaseActivity.myCustomApplication.getCurrentActivity();
Intent intent = new Intent(activity, SelfieCapture.class);
startActivity(intent);
finish();
}
@Override
public void onError(String result) {
}
});
Run Code Online (Sandbox Code Playgroud)
我有如下接口:
VolleyCallback.java:
public interface VolleyCallback {
void onSuccess(JSONObject result) throws JSONException;
void onError(String result) throws …Run Code Online (Sandbox Code Playgroud) java android android-asynctask android-studio android-volley