티스토리 뷰



안드로이드/Android HttpUrlConnection Request 설명 및 설정 하기 (header, get, post, body등.)



HttpUrlConnection Request header 설정하는 방법 입니다.


     // HttpURLConnection 객체 생성.
	HttpURLConnection conn = null;
	
	// URL 연결 (웹페이지 URL 연결.)
	conn = (HttpURLConnection)url.openConnection();

	// TimeOut 시간 (서버 접속시 연결 시간)
	conn.setConnectTimeout(CONN_TIMEOUT * 1000);
	
	// TimeOut 시간 (Read시 연결 시간)
	conn.setReadTimeout(READ_TIMEOUT * 1000);
	
	// 요청 방식 선택 (GET, POST)
	conn.setRequestMethod(GET);
	
	// Request Header값 셋팅 setRequestProperty(String key, String value)
	conn.setRequestProperty("NAME", "name"); 
	conn.setRequestProperty("MDN", "mdn");
	conn.setRequestProperty("APPID", "appid");
	
	// 서버 Response Data를 xml 형식의 타입으로 요청.
	conn.setRequestProperty("Accept", "application/xml");
	
	// 서버 Response Data를 JSON 형식의 타입으로 요청.
	conn.setRequestProperty("Accept", "application/json");
	
	// 타입설정(text/html) 형식으로 전송 (Request Body 전달시 text/html로 서버에 전달.)
	conn.setRequestProperty("Content-Type", "text/html");
	
	// 타입설정(text/html) 형식으로 전송 (Request Body 전달시 application/xml로 서버에 전달.)
	conn.setRequestProperty("Content-Type", "application/xml");

    // 타입설정(application/json) 형식으로 전송 (Request Body 전달시 application/json로 서버에 전달.)
    conn.setRequestProperty("Content-Type", "application/json");
	
	// 컨트롤 캐쉬 설정
	conn.setRequestProperty("Cache-Control","no-cache");

    // 타입길이 설정(Request Body 전달시 Data Type의 길이를 정함.)
    conn.setRequestProperty("Content-Length", "length")

	// User-Agent 값 설정
	conn.setRequestProperty("User-Agent", "test"); 
	
	// OutputStream으로 POST 데이터를 넘겨주겠다는 옵션.
	conn.setDoOutput(true);
	
	// InputStream으로 서버로 부터 응답을 받겠다는 옵션.
	conn.setDoInput(true);
	
	// Request Body에 Data를 담기위해 OutputStream 객체를 생성.
	OutputStream os = conn.getOutputStream();
	
	// Request Body에 Data 셋팅.
	os.write(body.getBytes("euc-kr"));
	
	// Request Body에 Data 입력.
	os.flush();
	
	// OutputStream 종료.
	os.close();

    // 실제 서버로 Request 요청 하는 부분. (응답 코드를 받는다. 200 성공, 나머지 에러)
    int responseCode = conn.getResponseCode();

    // 접속해지
    conn.disconnect();



네트워크를 완전 정복하는 그날까지!! Here we go~!!







저작자 표시 비영리 변경 금지
신고
댓글
  • 프로필사진 낭천 int responseCode = conn.getResponseCode(); 여기서 멈춰버리는(무한으로 정보를 찾고있음)현상은 왜 일어나는건가요?
    저희회사 공유기로 인터넷접속해서 하면 되는데 거래처 공유기로 와이파이 접속해서 서버데이터 불러오려고 하면
    그것도 평소엔 괜찮다가 타블렛을 2분정도 조작하지않고 불러오는 처리(버튼클릭)을 하면 저기서 setreadtimeout <- 데이터 불러오는 처리에서 더이상 진행되지않습니다 setreadtimeout(3000)걸어서 3초까지 기다리고 3초넘으면 예외발생에서 다시 처리하게 하면 되더군요 ;; 근데근본적인 원인이 너무 궁금합니다..혹시 아시고 계시면 지식좀 나눠주세요 ㅠ
    2012.09.13 15:53 신고
  • 프로필사진 아라비안왕자 timeout 걸리면 서버쪽이랑 통신이 안된다는 의미 인데요. 보통 timeout 걸리는 일반적으로 이유에는.

    1. 서버 동작 안함.
    2. 인터넷 연결 실패.
    3. https 프로토콜에 대한 지원 안함. (요건좀 헷깔리네요^^:)
    4. 서버 설정 오류.
    5. 파싱해오는 Data양이 많을 경우.

    등이 있을 수 있겠네요. 댓글 내용으로 보아 '딱히 어떤게 문제다'라고 말씀은 못드리겠으나 순서대로 확인을 해보시는게 좋을 것 같습니다. timeout도 좀 길게 잡아 보시고 테스트 해보시구요.

    2012.09.14 00:45 신고
  • 프로필사진 낭천 답변 감사합니다 ^^ 타블렛을 미조작 상태로 방치하지않고 할때에는 잘 되고 잠시 조작하지않다가 서버접속을 시도하면 timeout되는게 이유는 모르겠지만 역시 인터넷상의 문제인 것 같습니다. timeout 한계 시간은 무한으로 걸어봤는데(readtimeout default가 무한이더라구요 ㅎ;)흑흑 ㅜㅜ...근데 네트워크쪽은 하나도 모르는데 이것까지 해결하라고 하니 참 복잡하네요 ㅎㅎ
    감사합니다 잠시 다른일로 빠젔기때문에 그동안 조금씩 알아봐야겠어요 ^^
    2012.09.14 10:52 신고
  • 프로필사진 아라비안왕자 네 다른 타블렛에서도 해보시고 여러가지로 천천히 테스트 해보시면 분명 답을 찾으실 수 있을 거에요^^ 힘내시고 열코딩 하자구요!! 2012.09.15 00:34 신고
  • 프로필사진 천재IT전문가 태블릿이 아니라 공유기의 설정 문제이니 공유기 업체 문의하세요~~
    공유기 장기 미사용하면 셧다운 비슷~~한 모드로 진입하는 기능이있는데 그거 꺼야 합니다.
    2014.09.30 14:43 신고
  • 프로필사진 s 안녕하세요 UrlConnection 에 대해 궁금한게 있어 질문을 드리고자 합니다.

    서버로 요청을 보내고, 응답을 받을 때 사용할 수 있는 것으로 알고 있습니다.

    만약 응답 받기에 실패한다고 가정했을 때,
    요청을 보내고 타임아웃까지 응답 대기하다가 종료하는 건가요?
    아니면 내부적으로 일정 시간 간격 계속 요청을 보내다가 타임아웃이 되면 종료하는건가요?
    2017.06.19 00:59 신고
댓글쓰기 폼


Total
3,349,479
Today
1,559
Yesterday
1,976
링크
글 보관함
«   2017/12   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31