我可以使用HttpURLConnection成功连接、发送和接收数据。但是在我的手机(Samsung s4,4.2)和Android 4.2模拟器上加载所有数据需要很长时间。但在Android 2.3.x模拟器上加载图片几乎只需要1-2秒钟(非常快),比在http连接下的我的galaxy s4要快。
我正在使用AsyncTask,我的代码在两者上都可以正常工作,只是在Android 4.2上速度较慢。我尝试了删除chunkedStreaming、保持连接、更改超时值等,但仍然没有成功。
以下是我的代码:
不知道为什么会发生这种情况。
我正在使用AsyncTask,我的代码在两者上都可以正常工作,只是在Android 4.2上速度较慢。我尝试了删除chunkedStreaming、保持连接、更改超时值等,但仍然没有成功。
以下是我的代码:
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setUseCaches(false);
urlConnection.setChunkedStreamingMode(0);
urlConnection.setRequestProperty("Connection", "Keep-Alive");
urlConnection.setConnectTimeout(6000);
urlConnection.setReadTimeout(6000);
urlConnection.setRequestProperty("Content-Type", "multipart/form-data;charset=UTF-8;boundary="+boundary);
urlConnection.connect();
4.2版本和2.3.x版本的httpurlconnections有什么区别?这里是什么问题?
更新!
我使用Log.e()进行测试,以查看哪一行需要最长时间。
///// other staff
////......
Log.e("HTTP","3");
if (isCancelled())
return (null); // don't forget to terminate this method
Log.e("HTTP","3");
//Output
DataOutputStream outputStream = new DataOutputStream( urlConnection.getOutputStream() );
//Send Passcode
Log.e("HTTP","4");
电话线路传输3至4个数字,需要5-6秒钟。
DataOutputStream outputStream = new DataOutputStream( urlConnection.getOutputStream() );
更新!!
之前提到的等待时间与urlConnection.setConnectTimeout(6000)有关。
当我将超时时间设为1000时,连接会快速响应(等待1秒钟即可收到回应)。
DataOutputStream outputStream = new DataOutputStream( urlConnection.getOutputStream() );
不知道为什么会发生这种情况。
.connect()
,我在设置请求参数后立即getOutputStream()
和getInputStream()
。 - Gal Ben-Haim