我可以使用 httpurlconnection 成功连接、发送和接收数据。但是在我的手机(三星 s4、4.2)和 android 4.2 模拟器上加载所有数据需要很长时间。但是在 Android 2.3.x 模拟器上加载图片需要将近 1-2 秒(非常快)。在 http 连接上比我的 Galaxy s4 快。
我正在使用 AsyncTask 并且我的代码在两者上都可以正常工作。在 android 4.2s 上速度很慢。我尝试删除 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() );
不知道为什么会这样