当前位置: 首页 > 知识库问答 >
问题:

Android同步连接到REST/JSON-Volley、VolleyPlus还是Retrifit?

夏建弼
2023-03-14
    null

你有什么建议?有关于这个用例的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);

共有1个答案

归浩博
2023-03-14

这可能不能完全回答你的问题,但我只想分享我的观点。

作为一家初创公司的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

  • 问题内容: 我意识到这是一个基本问题,但是我在其他地方找不到答案。 是同步还是异步? 万一它是异步的,是否有可能在传播了动作之后添加一个回调,这是可能的? 问题答案: AFAIK,调度动作是同步的。如果您愿意解决异步调用,则可以在redux中使用thunk- middleware ,其中将dispatch作为回调函数提供,您可以根据需要调用它。

  • volley库如何在Android中同步工作?我想当volley从服务器得到响应的时候,程序的执行停止并等待volley的结果。

  • 问题内容: 我对诺言有很多困惑。是同步还是异步? 问题答案: 传递函数 为 无极构造同步运行,但任何依赖于它的分辨率将异步调用。即使promise立即解决,任何处理程序都将异步执行(类似于when )-主线程首先运行到末尾。 不管您的Javascript环境如何,都是如此-无论您是在Node还是浏览器中。