码
URL url = new URL("http://example.com/connector/url2Service"); URLConnection urlConnection = url.openConnection(); // Position 1 HttpURLConnection httpURLConnection = (HttpURLConnection)urlConnection; String requestStr = buildrequestString();// Position 2 ByteArrayOutputStream rqByteArrayOutputStream = new ByteArrayOutputStream(); rqByteArrayOutputStream.write(((String)requestStr).getBytes()); // Position 3 httpURLConnection.setDoOutput(true); httpURLConnection.setUseCaches(false); httpURLConnection.setDoInput(true); httpURLConnection.setRequestMethod("POST"); rqByteArrayOutputStream.writeto(httpURLConnection.getoutputStream()); // Position 4 // Waiting for the response. InputStream inputStream = httpURLConnection.getInputStream(); // Position 5 ByteArrayOutputStream rsByteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[4096]; int length = 0; while ((length = inputStream.read(buffer)) != -1) { // Position 6 rsByteArrayOutputStream.write(buffer,length);// Position 7 } String response = new String(rsByteArrayOutputStream.toByteArray());// Position 8
我的理解
>位置1:这将提供与远程资源进行通信的对象.但这种联系尚未建立.
>位置2:构建并获取请求.
>位置3:将字节写入ByteArrayOutputStream.
>位置4:这是与服务器进行通信的地方.我们正在编写字节.因此,服务器可以开始读取它们.当执行退出此行时,我们已完成发送请求对象.
>位置5:当我们退出此行时,服务器已完成发送响应对象.因此,我们可以开始阅读响应对象.
>位置6:将对象读取为4096字节块.
>位置7:将读取的字节写入ByteArrayOutputStream.
>位置8:完成读取响应并将其转换为字符串.
我的问题
>我们可以说上传请求的重点是什么
完成? (一世
相信这是在我们执行存在位置时完成的
4)
>重点是什么
我们可以说响应下载完成了吗? (我对第5点和第8点有疑问)
>当我们退出第5点时,这意味着响应是完全的
已下载或刚开始下载?
>到哪个点网络(带宽)会对性能产生影响? (第5,6,7 ……)
>现在我正在调整InputStream读取代码.如果您有任何建议请分享?
参考文献:
> http://www.oracle.com/technetwork/articles/javase/perftuning-137844.html
> http://www.oracle.com/technetwork/java/performance-139413.html
> http://www.javaworld.com/article/2076241/build-ci-sdlc/tweak-your-io-performance-for-faster-runtime.html
> http://www.kegel.com/java/wp-javaio.html
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。