[C#] HTTP GET / POST 요청 처리
2021. 10. 12. 16:30
C# HTTP GET / POST 요청 처리
c# winForm에서 로그인 기능을 만들어보고 싶었다.
winForm은 UI 역할을 해주고 데이터 기능을 받아
서버로 아이디/패스워드를 보내 처리를 받아야한다.
그럼 일단 c#에서 서버로 Get/Post요청을 하는 법을 알아야 겠다 싶어서 정리한다.
- 서버는 스프링부트 환경(java 8, gradle)에서 구동시킴
- DB는 따로 사용하지 않았고 Repository 클래스를 하나 만들어서 Map에 데이터 저장함
Get 요청
C#
private void btnServerConnect_Click(object sender, EventArgs e)
{
// 요청을 보낼 URL
string url = "http://localhost:8080/login";
string responseText = string.Empty;
// HTTP 요청 생성
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
try
{
using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
{
// 상태코드
HttpStatusCode status = resp.StatusCode;
lblServerStatus.Text = status.ToString(); // OK
// 데이터
Stream respStream = resp.GetResponseStream();
using (StreamReader sr = new StreamReader(respStream))
{
responseText = sr.ReadToEnd();
lblData.Text = responseText;
}
}
}
catch (WebException err)
{
MessageBox.Show(err.ToString());
}
}
JAVA
@RestController
public class LoginController {
StaffRepository store = new StaffRepository();
@GetMapping("/login")
public String LoginTest(){
return "connect completed";
}
}
- 결과 : 서버에서 return 해준 connect completed가 c# 쪽으로 전송됨
Post 요청
C#
private void btnLogin_Click(object sender, EventArgs e)
{
string url = "http://localhost:8080/login";
Staff staff1 = new Staff("1111", "2222");
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/json";
var settings = new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() };
string jsonUserinfo = JsonConvert.SerializeObject(staff1, settings);
try
{
string result = string.Empty;
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(jsonUserinfo);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
lblLoginResult.Text = result;
}
}
}
catch (WebException err)
{
MessageBox.Show(err.ToString());
}
}
JAVA
@RestController
public class LoginController {
StaffRepository store = new StaffRepository();
@GetMapping("/login")
public String LoginTest(){
return "connect completed";
}
@PostMapping("/login")
public String Login(@RequestBody StaffVO staffVO){
System.out.println(staffVO.toString());
return "login success";
}
}
'skill > C#' 카테고리의 다른 글
[C#] multipart/form-data 이미지 파일 전송 예제 (0) | 2021.10.15 |
---|---|
[C#] JSON 데이터 POST 전송시 requestbody mapping이 안되는 문제 (0) | 2021.10.12 |
[C#] 파일입출력(IO) - 스트림(stream), 직렬화(Serializable) (0) | 2021.09.16 |
[C#] 파일입출력(IO) - File, Directory (0) | 2021.09.16 |
[C#] LINQ (0) | 2021.09.13 |