Home » HTTP

HTTP

multipart/form-data 타입의 HTTP 메시지 구성 방법

파일 업로드를 구현할 때, 클라이언트가 웹브라우저라면 폼을 통해서 파일을 등록해서 전송하게 됩니다. 이때 웹브라우저가 보내는 HTTP 메시지는 Content-Type 속성이 multipart/form-data로 지정되며, 정해진 형식에 따라 메시지를 인코딩하여 전송합니다. 이를 처리하기 위한 서버는 멀티파트 메시지에 대해서 각 파트별로 분리하여 개별 파일의 정보를 얻게 됩니다.

만약 서버사이드가 이러한 방식으로 동작할 때, 웹브라우저처럼 파일을 멀티파트 메시지로 만들어서 업로드하는 것을 별도의 앱에서 구현하려면 어떻게해야 할까요? 그 방법을 알기 위해서 멀티파트 http 메시지가 어떻게 생겼는지를 살펴보면 거기에 해답이 있을 것 같습니다. 먼저 http 메시지의 구조를 보겠습니다.

더 보기 »multipart/form-data 타입의 HTTP 메시지 구성 방법

URLSession을 통한 간단한 업로드 – Swift

URLSession(NSURLSession)을 기반으로 URLSessionDataTask를 이용하면 HTTP를 통해서 서버와 간단한 데이터를 주고받을 수 있다.  Data Task를 이용하는 케이스는 흔히 키-값 쌍의 정보를 URL로 인코딩해서 주소에 포함하고 서버로부터 응답을 받는 식으로 처리하는 것이 일반적이다. 서버로 데이터나 파일을 업로드하는 경우에는 URLSessionUploadTask 클래스를 사용하는데, 이를 이용한 파일 업로드를 어떻게 구현하는지 살펴보자. 사실, 그리 크지 않은 크기의 파일 데이터는 데이터태스크를 이용해도 무방하다. POST 전송을 통한 파일 업로드 HTTP 규격에는 메소드(METHOD)라는 항목이 포함된다. 가장 많이 쓰이는 메소드는 GET과 POST인데, GET은 서버로부터 페이지를 요청할 때 쓰는 것이고 (뭔가를… 더 보기 »URLSession을 통한 간단한 업로드 – Swift

네이버 검색에서 로또 당첨번호 파싱하기 – Swift + CommandLine

네이버 검색으로부터 로또 당첨 번호를 파싱하는 방법에 대해서 살펴보자. 기본적으로 이 작업을 수행하기 위해서는 두 가지 기술을 사용할 것이다. NSURLSession :  웹페이지 데이터를 받아와야 하기 때문에 네트워킹 API 를 사용해야 한다. NSRegularExpression : 받아온 데이터는 HTML 페이지의 소스 데이터이며, 여기서 로또 당첨번호의 내용을 추출하기 위해 간단한 정규식을 사용할 것이다. 아, 그리고 참고로 여기서 사용된 Swift 버전은 4.0이다. 준비 과정 네이버는 로또 당첨번호 검색에 대해서 일반적인 웹문서 결과가 아닌 별도로 디자인된 영역으로 당첨번호를 예쁘게 표시해주고 있다. 실제로 네이버에서 “로또 당첨번호”라는 키워드로… 더 보기 »네이버 검색에서 로또 당첨번호 파싱하기 – Swift + CommandLine

Form submit via POST on Swift (NSURLSession)

POST 폼전송
NSURLSession을 통해서 POST로 폼 내용을 전송하는 예제를 작성해보겠다. 사실 이 예제는 꽤 예전에 Objective-C를 이용해서 작성해 본 바 있는 내용이다.
먼저 POST 폼 전송에 대해서 잠깐 살펴보면, 폼의 각 필드명과 필드값이 GET 방식과 비슷한 형태로 연결되고 URL인코딩을 거쳐 바이너리스트림 데이터로 생성된다. 이걸 submit 하게 되면 브라우저는 웹서버의 해당 주소에 HTTP 요청을 보내게 되는데,더 보기 »Form submit via POST on Swift (NSURLSession)