달짱달짱

[RestAPI/C#] Multipart/form-data POST 방식 수신 본문

RestAPI

[RestAPI/C#] Multipart/form-data POST 방식 수신

달콩쨩 2022. 5. 4. 17:38

HTTPListener를 통해 POST 로 전송되는 Multiform-data Body 수신 및 Body 가져오기 

* Method : POST

* Content Type : Multipart/form-data

 

1. 참조 추가 

using System.Net;

using System.Net.Http;

2. HttpListener 선언 

HttpListener httpListener;

3. HttpListener 객체 생성 

if (httpListener == null)
{
	httpListener = new HttpListener();
	httpListener.Prefixes.Add(string.Format("http://127.0.0.1:31400/"));
	serverStart(); //서버 시작 함수 호출
}

4. serverStart() 함수 : 수신된 context 가져오기

private void serverStart()
{
	if (!httpListener.IsListening)
	{
		httpListener.Start();	//Server is start!
		
		Task.Factory.StartNew(() =>
		{
			while (httpListener != null)
			{
				HttpListenerContext context = this.httpListener.GetContext();
                
				Stream stream = GetBody(context);
                
                		context.Response.Close();
			}
		});
	}

}

5. GetBody() 함수 : Request Body 전부 가져오기 

private Stream GetBody(HttpListenerContext context)
{
	if (!context.Request.HasEntityBody)
	{
		return null;
	}

	System.IO.Stream body = context.Request.InputStream; // Stream형식으로 받아오기 
    	//원하는 자료형에 따라 변환하여 사용가능

	return body;
}

6. 아래와 같은 형식의 데이터 확인 가능 (예시)

--12345
Content-Disposition: form-data; name="sometext"

some text that you wrote in your html form ...
--12345
Content-Disposition: form-data; name="name_of_post_request" filename="filename.xyz"

content of filename.xyz that you upload in your form with input[type=file]
--12345
Content-Disposition: form-data; name="image" filename="picture_of_sunset.jpg"

content of picture_of_sunset.jpg ...
--12345--
  • --12345 : 구분자 

** 참고 **

위의 방법으로 가져온 Body 항목 파싱하는 방법 

2022.05.04 - [RestAPI] - [RestAPI/C#] Multipart/form-data POST 방식 수신 데이터 파싱

 

[RestAPI/C#] Multipart/form-data POST 방식 수신 데이터 파싱

POST 방식으로 보내진 Multipart/form-data Body를 가져오는 방법은 이전 발행 글에 있다. 2022.05.04 - [RestAPI] - [RestAPI/C#] Multipart/form-data POST 방식 수신 [RestAPI/C#] Multipart/form-data POST 방..

dalkongzzang.tistory.com

 

'RestAPI' 카테고리의 다른 글

[RestAPI/C#] Multipart/form-data POST 방식 수신 데이터 파싱  (0) 2022.05.04