brunch

You can make anything
by writing

C.S.Lewis

by jinTonic Apr 09. 2017

[iOS] http POST 전송

#iOS File Upload 방법 #서버로 데이터 업로드 하기

웹 서버로 POST방식의 데이터 전송 방법에 대해 알아 보겠습니다.



먼저 웹서버의 URL을 입력하고, 해당 웹서버에 Request를 해줍니다.

그리고 데이터(body)에 따라 Content-Type을 다르게 적용 해야 됩니다.


HTTP Header에 쓰이는 Content-Type이란 무엇일까?

request에 실어 보내는 데이터(body)의 type 정보를 표현하는 것입니다.

위와 같이 File을 실어 보내기 위해서는 multipart/form-data가 있습니다.

텍스트 전송이라면 Application 타입으로 application/json, application/x-www-form-urlencode가 있습니다.

즉, Content Type은 Request에 실어 보내는 데이터의 type에 따라 적절하게 선택을 해주면 됩니다.



Header 설정을 한 후에 Body부분을 생성합니다.

name=\"%@\"은 실제 폼의 이름을 나타내고, 바로 밑에 데이터를 넣고 boundary로 구분해 줍니다.


NSString은 내부적으로 UTF16 유니코드 문자열을 사용하기 때문에, HTTP로 전송하는 문자열의 인코딩은 기본적으로 UTF8로 인코딩한 후에 전송을 해야합니다.


파일들은 형식이 조금 다르긴 하지만 전송 자체는 문자열 객체를 보내는 것이 아니라 바이트 스트림 데이터를 보내는 것이므로, NSData 객체로 감싸서 보내야 합니다.

끝을 나타내는 boundary는 다른 값들과 다르게 마지막에 -- 가 붙은 것을 확인할 수 있는데 이는 body의 끝을 알리는 의미이다.


이렇게 데이터를 모두 설정한 후 request객체를 동기식으로 전송한다음 간단하게 웹서버의 응답 값을 얻을 수 있습니다.


이러한 것들이 모두 HTTP 통신 규격으로 지정되어 있으며 이 규격에 맞게 Header와 Body 데이터를 생성한 후 HTTP server에 요청하게 되면 서버에서도 HTTP 통신 규격에 맞게 데이터를 파싱한 후 처리하게 됩니다.


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari