(byte[] input_data)
| 667 | } |
| 668 | |
| 669 | private static byte[] getChankedHttpBody(byte[] input_data) throws Exception { |
| 670 | // TODO 改行コードの対応 |
| 671 | byte[] search_word = new String("\r\n").getBytes(); |
| 672 | int index = 0; |
| 673 | int start_index = 0; |
| 674 | byte[] body = new byte[0]; |
| 675 | while ((index = Utils.indexOf(input_data, start_index, input_data.length, search_word)) >= 0) { |
| 676 | |
| 677 | try { |
| 678 | |
| 679 | byte[] chank_header = ArrayUtils.subarray(input_data, start_index, index); |
| 680 | String chank_length_str = new String(chank_header, "UTF-8").replaceAll("^0+([^0].*)$", "$1"); |
| 681 | int chank_length = Integer.parseInt(chank_length_str.trim(), 16); |
| 682 | if (chank_length == 0) { |
| 683 | |
| 684 | return body; |
| 685 | } |
| 686 | byte[] chank = ArrayUtils.subarray(input_data, index + search_word.length, |
| 687 | index + search_word.length + chank_length); |
| 688 | body = ArrayUtils.addAll(body, chank); |
| 689 | start_index = index + search_word.length * 2 + chank_length; |
| 690 | } catch (Exception e) { |
| 691 | |
| 692 | return null; |
| 693 | } |
| 694 | } |
| 695 | return null; |
| 696 | } |
| 697 | |
| 698 | public InetSocketAddress getServerAddr() throws Exception { |
| 699 | return new InetSocketAddress(PrivateDNSClient.getByName(proxyHost), proxyPort); |
no test coverage detected