尝试使用Volley库通过WIFI从互联网获取数据时经常出错

时间:2015-12-15 16:46:22

标签: android web-services android-volley

我使用Volley库从雅虎财经获取数据。但是10-25%的时间它会在onErrorResponse(VolleyError错误)方法中返回错误。

java.net.UnknownHostException:无法解析主机" query.yahooapis.com":没有与主机名关联的地址

有趣的是,只有在3G上使用wifi才能完美运行。通过做一些研究,我发现这个Exception Thrown表示主机的IP地址无法确定或设备连接到有效的wifi但路由器没有接收到互联网。但是,当我的应用程序开始逐一向我提供这些错误时,我可以轻松启动另一个基于互联网的应用程序(如youtube),它们将正常工作。我99%支持这不是wifi问题,因为:1)我已经尝试了3个不同的地方连接到wifi(所有与不同的互联网提供商)。 2)具有不同Android版本的4种不同设备。 3)来自不同国家的许多用户报告此问题。它经常发生。 我的截击码。

public class VolleySingleton {

private static VolleySingleton sInstance = null;
private RequestQueue mRequestQueue;

private VolleySingleton() {
    mRequestQueue = Volley.newRequestQueue(MyApplication.getAppContextFromAppInstanse());
}

public static VolleySingleton getInstance() {
    if (sInstance == null) {
        sInstance = new VolleySingleton();
    }
    return sInstance;
}

public RequestQueue getRequestQueue() {
    return mRequestQueue;
}

}

private void getData(String request) {
        RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue();
        startRefreshingAnimation();
        StringRequest stringRequest = new StringRequest(Request.Method.GET, request, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                mQuote = QuoteJSONParser.parseFeedOneQuote(response);
                if (mQuote != null) {
                  //do stuff with data
                } else {
                   // load from db
                }
                stopRefreshingAnimation(1200);
            }
        }, new com.android.volley.Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //java.net.UnknownHostException: Unable to resolve host "query.yahooapis.com": No address associated with hostname
                // notify user about the error
                stopRefreshingAnimation(1200);
            }
        });
        requestQueue.add(stringRequest);
}  

0 个答案:

没有答案