마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 파싱 질문드립니다

0 추천
public class CookieManager
{
    private static CookieManager instance = null;

    private static final String COOKIE_ID = "SESSION";

    private CookieManager(){	}

    public static CookieManager getInstance()
    {
        if( instance == null )
            instance = new CookieManager();
        return instance;
    }

    public String doPost(String urlString, String data, String cook)
            throws Exception
    {
        List<String> cookie = null;
        URL url = new URL(urlString);
        HttpURLConnection connection = (HttpURLConnection)url.openConnection();
        connection.setInstanceFollowRedirects(false);
        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36");
        connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

        if( cook != null )
            connection.setRequestProperty("Cookie", cook);
        connection.setDoOutput(true);

        DataOutputStream wr = new DataOutputStream (connection.getOutputStream());

        wr.writeBytes(data);
        wr.flush();

        Map<String,List<String>> headerFields = connection.getHeaderFields();
        Set<String> set = headerFields.keySet();
        Iterator<String> itor = set.iterator();
        while (itor.hasNext())
        {
            String key = itor.next();

            if( key != null )
            {
                if( key.equals("Set-Cookie") )
                {
                    cookie = headerFields.get(key);
                }
            }
        }

        wr.close();
        if( cookie != null )
        {
            itor = cookie.iterator();
            while( itor.hasNext() )
            {
                String return_cookie = itor.next();
                if( return_cookie.contains(COOKIE_ID) )
                    return return_cookie;
            }
        }

        return null;
    }


    public URLConnection setCookie(String urlString, String cookie)
            throws Exception
    {
        URLConnection conn = null;

        URL url = new URL(urlString);
        conn = url.openConnection();
        conn.setRequestProperty("Cookie", cookie);
        conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36");
        conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
        conn.setDoOutput(true);
        conn.setUseCaches(false);
        conn.connect();

        return conn;
    }
}

String session = CookieManager.getInstance().doPost(loginurl, "UserID=" + id + "&Password=" + pwd, null);

이런식으로 아이디와 패스워드를 입력하면 로그인되게해서 데이터를 파싱하려고합니다

이클립스로에서는 저렇게 소스를 짜서 잘쓰고있었는데

제가 안드로이드가 처음이라 안드로이드로에서는 되질 않네요

DataOutputStream wr = new DataOutputStream (connection.getOutputStream());

이부분이후로 진행되지 않습니다 부탁드립니다 8ㅅ8

345r3452sx (180 포인트) 님이 2016년 7월 26일 질문

1개의 답변

0 추천
connection.getOutputStream()에서 에러를 내고 진행이 안되는건가요 그냥 멈춰있다는건가요?

커넥션을 받아올 수 없으면, 인터넷 퍼미션이 제대로 지정되지 않았을수도 있을것 같고..

그리고 네트워크쪽은 라이브러리 괜찮은것을 찾아서 쓰는것이 좋아보입니다.

Retrofit, volley 등등 여러가지 좋은 라이브러리 들이 많이 있습니다.
캬옹이 (37,920 포인트) 님이 2016년 7월 26일 답변
에러는 나지 않고 그냥 멈춰버리는것같습니다 . .
인터넷퍼미션도 해주었는데 그러네요 8ㅅ8
...