Back to project page retrowatch.
The source code is released under:
Apache License
If you think the Android project retrowatch listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
package com.hardcopy.retrowatch.connectivity; //from w w w. j a va 2 s. com import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLEncoder; import java.util.Iterator; import java.util.List; import java.util.Map; import android.util.Log; /* ????? : ??? (???) ?? ?? : 2011.02.26 ????? : ???? 7 64bit, ????????, ??????? SDK(2.1 ver7) */ /// HTTP????? ???????? ?? ???? ???? ????? /// GET? POST??? ???? ? ?? ????. /// ????? ???? ????? ?????? ???? ???? /// request ( URL??, ???(GET or POST), ???+??? ) ; ??? ??? ???? ? ??. public class HttpRequester { public String m_request ; /// ???? ????? ??? ??? ???? private HttpURLConnection m_con ; /// http????? ????? ??? ??? String m_cookies = "" ; /// ?? ???? ??? ?? boolean m_session = false ; /// ????? ?? ?? ??? ??? ?? long m_sessionLimitTime = 600000 ; /// ?? ???? (?????) long m_sessionTime = 0 ; /// ????? ???? ?? private static final String ENCODING_TYPE_UTF_8 = "UTF-8"; private static final String ENCODING_TYPE_EUC_KR = "EUC-KR"; private static int TIMEOUT_VALUE = 5000; HttpRequester( ) /// ????? {} /// 1. ????? ????????? ???? /// 2. ????? ?????? ?? ???? false~ public boolean checkSession( ) { if( !m_session ) { return false ; } if( System.currentTimeMillis( ) < m_sessionTime + m_sessionLimitTime ) { m_sessionTime = System.currentTimeMillis( ) ; /// ???? ??? ?????? ?? ?? ???? return true ; } else { m_session = false ; /// ??????? ????? ????? ??? return false ; } } /// Request? ???? ?? ??? ?? ??? ????. public String requestAndSetSession( String uri, Map<String, Object> params ) throws MalformedURLException, IOException { String rec = request( new URL(uri), null, "POST", params ) ; /// ???? ???? ???????? ??? Map<String, List<String>> imap = m_con.getHeaderFields( ) ; /// ???? Http????? ??? if( imap.containsKey( "Set-Cookie" ) ) /// ??? ?? ??? ??? ??? { List<String> lString = imap.get( "Set-Cookie" ) ; /// ??? ?????? ? ??? for( int i = 0 ; i < lString.size() ; i++ ) { m_cookies += lString.get( i ) ; } m_session = true ; /// ????? ????? } else { m_session = false ; } /// ?????? ???? ????? ??????? m_session???? ????? /// checkSession( ) ??? ???? ??? ?????? ???? ???? ??? return rec ; } /// ???? ???? ?? /// ( URL??, ???(GET or POST), ???+??? ) ; protected String request( URL url, String encType, String method, Map<String, Object> params) throws IOException { if(url == null) return ""; InputStream in = null ; /// ??? ??????? OutputStream out = null ; /// POST?????? ?? ???????? ??? ??? ??? /// ???? ??? ??? m_con = (HttpURLConnection) url.openConnection( ) ; ///String wwwstring = URLEncoder.encode( url.toString() ) ; m_con.setRequestMethod(method); m_con.setConnectTimeout(TIMEOUT_VALUE); m_con.setReadTimeout(TIMEOUT_VALUE); /// ????? ???? HTTP????? ????? urlencoded????? ??????? ??????. m_con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); /// ??????? ?????? ?? m_con.setDoInput(true); if( m_session ) { m_con.setRequestProperty( "cookie", m_cookies ) ; } /// ??????????? ?? ??? outputStream????? ??? ?? if (method.equals("POST")) { /// ???????? ??? ??? ????. m_con.setDoOutput(true); /// ??? ??? ????? ?????? true? ? String paramstr = buildParameters( params ) ; /// ??????? ????? ?? out = m_con.getOutputStream( ) ; /// ??? ??? ??? out.write( paramstr.getBytes( "UTF-8" ) ) ; /// UTF-8?????? ???? ??? ??. out.flush( ) ; /// ???~ out.close( ) ; /// ??? ?? // Log.d( "jsonPrint", "post succes" ) ; /// ???? } // SuhYB. Find encoding type to prevent broken 2-byte character String encodingType = ENCODING_TYPE_EUC_KR; try { String headerType = m_con.getContentType(); if(encType!=null && encType.length()>0) encodingType = encType; if(headerType !=null && headerType.toUpperCase().indexOf(ENCODING_TYPE_UTF_8) != -1) { encodingType = ENCODING_TYPE_UTF_8; } } catch(Exception e) { e.printStackTrace(); encodingType = ENCODING_TYPE_UTF_8; } /// ??? ???????? ???? ??? ByteArrayOutputStream bos = new ByteArrayOutputStream(); /// ???? ???????? ??? ???? byte[] buf = new byte[131072]; try { in = m_con.getInputStream(); /// ??????? ??? //Log.d( "---recTime---", "" + (System.currentTimeMillis( ) - ti) ) ; /// == ?? ????? == inputstream?? ??? ?? 10?????? ???? ??????? /// ??? S??? ?????? WebView??????? Http????? 15????? ???? ?? ????? /// ???????? ? ? ?? ????? ????? ???? ? ???????? ??? ??? S?!!! ????? ?? ??? /// ??? ????? ????? ????????? ????. while (true) { int readlen = in.read(buf); if (readlen < 1) break; bos.write(buf, 0, readlen); } m_request = new String( bos.toByteArray( ), encodingType ) ; // SuhYB. ?? ????????? ??? ??? ??? ?? ??? ????? ???? ?? /////// ???? ???? ????? UTF-8? ???? ????? ?? ///////////////// /* File fl = new File( "/sdcard/rec.txt" ) ; FileOutputStream fos = new FileOutputStream( fl ) ; fos.write( bos.toByteArray( ) ) ; /**/ return m_request ; } catch (IOException e) { /// ???? ??? ???? ?? ?????? ???? ???? ?????. if(m_con != null && m_con.getResponseCode() == 500) { /// ???? ???? ???? ???? ??????? ????? ????? ?? bos.reset(); InputStream err = m_con.getErrorStream(); while (true) { int readlen = err.read( buf ) ; if ( readlen < 1 ) break ; bos.write( buf, 0, readlen ) ; } /// ??????? ????? ?? String output = new String(bos.toByteArray(), "UTF-8"); /// ?????? ??????? ????. System.err.println(output); } throw e; } finally /// 500?????? ??? ?? ??? ??????.... -_- ???????? ???? { if ( in != null ) in.close( ) ; if ( m_con != null ) m_con.disconnect( ) ; } } /// ?????? ???? ???? "???=???&" ?????? ????? ????? ?? protected String buildParameters(Map<String, Object> params) throws IOException { if( params == null ) return "" ; StringBuilder sb = new StringBuilder( ) ; /// ? ????? arg1=???&arg2=?????????&arg3=??? ???????? ???? ???. for( Iterator<String> i = params.keySet( ).iterator( ) ; i.hasNext( ) ; ) { String key = (String) i.next(); sb.append(key); sb.append("="); sb.append(URLEncoder.encode(String.valueOf(params.get(key)), "UTF-8")); if (i.hasNext()) sb.append("&"); } return sb.toString(); } }