我正在使用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。
你们有办法提高这个过程的速度吗?这只是给我一个字符串,不应该那么久。在此先感谢您的帮助!