1
                URL url = new URL(URL path);
                HttpURLConnection connection = (HttpURLConnection)url.openConnection();
                connection.setConnectTimeout(30000);
                connection.setReadTimeout(30000);
                connection.setDoInput(true);
                connection.setUseCaches(true);
                connection.connect();
                InputStream is = connection.getInputStream();

以上代码是我的Android代码。
我尝试连接一个 URL 路径并获取 InputStream 的信息。
我尝试通过 Android 手机和 iPhone 使用相同的 wifi 连接相同的 URL 路径。
Android 手机在 moto 手机或 HTC 手机上花费大约 10 秒。
但 iPhone 只用了不到 3 秒。
我认为这可能不仅是由于wifi速度造成的。(因为我尝试使用相同的wifi)。
所以我想问一下是否可以通过代码改进?

4

2 回答 2

2

尝试使用 apacheHttpClient而不是URL.openConnection()

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet get = new HttpGet("http://your.url");

HttpResponse response;
try {
    response = httpClient.execute(get);
    InputStream is = response.getEntity().getContent();
} catch(Exception e){
    e.printStackTrace();
}

编辑:

在 API 级别 22 (Android M) 中,Apache HttpClient 将被移除,因此该方法已被弃用。

有关更多信息,请参阅:http: //developer.android.com/preview/behavior-changes.html#behavior-apache-http-client

推荐的方法是使用HttpUrlConnectionhttp://developer.android.com/reference/java/net/HttpURLConnection.html):

URL url = new URL("http://your.url");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
    InputStream in = new BufferedInputStream(urlConnection.getInputStream());
    readStream(in);
} finally {
    urlConnection.disconnect();
}
于 2012-07-25T08:49:37.347 回答
0

使用 volley 它是一个 HTTP 库,可以让 Android 应用程序的网络更轻松、更快捷。Volley 在 GitHub 上可用。Volley 或许能够帮助您简化和提高应用程序网络操作的性能。

于 2018-06-12T16:57:08.507 回答