通过HttpUrlConnection获取JSON太慢了

时间:2016-01-13 08:23:16

标签: android json httpurlconnection

我正在使用HHtp(s)UrlConenction从我的服务器获取一些JSON。但是这太慢了,尤其是得到InputStream的部分。

JSON由我自己的服务器提供。作为一个例子,这个应用程序的iOs版本可能在一秒钟内得到它。在这里它可以达到5/6秒,这会杀死应用程序的响应方面。

这是我用来获取json的过程:

    URL url;
    // get URL content
    url = new URL(apiURL);
    conn = (HttpsURLConnection) url.openConnection();

    System.setProperty("http.keepAlive", "false");
    conn.setReadTimeout(5000);
    conn.setConnectTimeout(5000);
    conn.setUseCaches(false);
    conn.setDoInput(true);
    conn.setDoOutput(false);
    conn.setHostnameVerifier(AsyncConnect.DO_NOT_VERIFY);
    conn.setRequestMethod("GET");
    conn.setRequestProperty("Content-length", "0");
    conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
    conn.setRequestProperty("X-Requested-With", "XMLHttpRequest");
    conn.setRequestProperty(MainActivity.API_TOKEN, MainActivity.ENCRYPTED_TOKEN);

    in=conn.getInputStream(); // slowest part so far, several seconds spent there

    // open the stream and put it into BufferedReader
    BufferedReader br = new BufferedReader(new InputStreamReader(in));

    while ((line=br.readLine())!= null) {
        builder.append(line);
    }

    result=builder.toString();
    //System.out.print(result);
    br.close();



} catch (MalformedURLException e) {
    result=null;
} catch (IOException e) {
    result=null;
} catch (Exception e) {
    result=null;
}
finally {
    try {
        in.close();
    }catch(Exception e){}
    try {
        conn.disconnect();
    }catch(Exception e){}

    return result;
}

为什么这么慢?我知道我可能应该使用Volley或Retrofit,但我是初学者,因为这一刻我并不知道如何使用它们。我甚至不确定它会更快,尤其是使用hhtps。

你们有办法提高这个过程的速度吗?这只是给我一个字符串,不应该那么久。在此先感谢您的帮助!

0 个答案:

没有答案