你有什么建议?有关于这个用例的Volley/VolleyPlus示例或教程吗?翻新的举动值得重新工作吗?
更新:
我开始用改型和替换我的一些截击电话。太完美了!它用比Volley更少的代码完成了我想要的事情。到目前为止,我还没有进行自动解析,只是获取JSON格式的原始HTTP响应并发送到我以前的解析器类,但最终当我了解POJOs和GSON时,我会替换它们。我不得不在同步调用的主活动上禁用严格模式,并添加try/catch来处理一些错误。以下是其中一个方法的改进代码:
RestAdapter.Builder builder = new RestAdapter.Builder()
.setEndpoint(neutronURL)
.setLogLevel(RestAdapter.LogLevel.FULL)
.setClient(new OkClient(new OkHttpClient()));
builder.setRequestInterceptor(new RequestInterceptor() {
@Override
public void intercept(RequestFacade request) {
request.addHeader("X-Auth-Token", authToken);
}
});
RestAdapter adapter = builder.build();
SecurityAPI api = adapter.create(SecurityAPI.class);
if (security == null){
pDialog.setMessage("Contacting Server...");
pDialog.show();
}
try {
Response result = api.getSecSync();
security = getRawJSON(result);
} catch (RetrofitError e) {
Log.d("Retrofit Error", e.toString());
if (e.toString().contains("Unauthorized")){
tokenExpiredAlert();
}
if (offline==0 && e.toString().contains("Unable to resolve host")){
offlineAlert();
}
}
以及它调用的接口:
public interface SecurityAPI {
@Headers({
"Accept: application/json",
"Content-Type: application/json; charset=utf-8"
})
@GET("/v2.0/security-groups")
//void getSecurityContent(Callback<Response> callback);
Response getSecSync();
}
更新2:
关于VolleyPlus,我将如何使用它与此代码?我尝试了,但没有成功,得到了几个关于抽象类的错误:
JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, novaURL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
Log.d("Nova on Response", response.toString());
setNovaJSON(response.toString());
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d("Nova on Error", "Error: " + error.getMessage());
setNovaJSON(error.toString());
}
}
) {
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("X-Auth-Token", authToken);
params.put("Accept", "application/json");
params.put("Content-Type", "application/json; charset=utf-8");
return params;
}
};
queue = VolleySingleton.getInstance(this).getRequestQueue();
//VolleySingleton.getInstance(this).addToRequestQueue(getRequest);
queue.add(getRequest);
这可能不能完全回答你的问题,但我只想分享我的观点。
作为一家初创公司的Android开发负责人,我从Volley开始(2013年底),遇到了一些问题。我在一周内换了改装。
同步与异步的形式是回调。如果存在回调,则Regetfit知道异步运行它,否则它将等待返回值。
我目前正在阅读Trevor Burnham的Async Javascript。到目前为止这是一本很棒的书。 他谈到这个片段和console.log在Safari和Chrome控制台中是“异步”的。不幸的是我无法复制这个。代码如下: 如果这是异步的,我会预期结果是books的结果。将console.log()放在事件队列中,直到所有代码执行完毕,然后运行它,它将具有bar属性。 虽然它是同步运行的,
我试图使用RequestFuture向服务器发出同步请求,但它不起作用。使用异步完成相同的请求时效果良好。 这是我的代码: 我得到一个nullpointerexception: Java语言lang.NullPointerException:尝试调用虚拟方法的java。lang.String组织。json。J主题。com上的null对象引用上的toString()。数学应用程序。所有模块。在com
null
问题内容: 我意识到这是一个基本问题,但是我在其他地方找不到答案。 是同步还是异步? 万一它是异步的,是否有可能在传播了动作之后添加一个回调,这是可能的? 问题答案: AFAIK,调度动作是同步的。如果您愿意解决异步调用,则可以在redux中使用thunk- middleware ,其中将dispatch作为回调函数提供,您可以根据需要调用它。
volley库如何在Android中同步工作?我想当volley从服务器得到响应的时候,程序的执行停止并等待volley的结果。
问题内容: 我对诺言有很多困惑。是同步还是异步? 问题答案: 传递函数 为 无极构造同步运行,但任何依赖于它的分辨率将异步调用。即使promise立即解决,任何处理程序都将异步执行(类似于when )-主线程首先运行到末尾。 不管您的Javascript环境如何,都是如此-无论您是在Node还是浏览器中。