본문 바로가기
[ Program ]/C#

C#으로 post 전송하기

by 관이119 2012. 9. 18.



출처 - http://blog.naver.com/coolpixer


C# 에서 WEB PAGE에 POST로 값 전달 하기


<form name="Test0" method="post" action="http://www.test.com">
<input type="hidden" name="user" value="xxxx">
<input type="hidden" name="pswd" value="1111">
<input type="hidden" name="name" value="김광수">
<input type="submit" value="회원가입">
</form>

위와같이 html 을 만들어 브라우져 창을 띄우고 회원 가입을 하면 값이 정상 적으로 넘어갑니다.
이걸 보신 모든 분들이 아는 방법 이겟지요 ... ㅋㅋ

제가 드리는 팁은 이걸 c# 에서 전송하는 방법입니다.
물론 저의 c# 실력은 시작한지 1일 지난 상태이므로 소스 개판이다 소리 하지 말아주세요
아직 개념도 프로그램 구성도 모르고 마냥 개삽질 하면서 알아낸 방법입니다.
소스 볼줄도 몰라... 더 힘들었습니다. ㅠㅠ

만들때 힘들었고 혹 다른 나와 같은 상황에 계신 분께서는 삽질을 하지 않길 원해서....


using System;
using System.Windows.Forms;
using System.Text;
using System.Net;
using System.IO;


/// 전달 하고자 하는 값
string str_sendvalue = "who=나야나"+"&"+"you=너는누구냐" +"&"+"etc=1234567890" + ; // 1,2 번 모두 똑같이 이값을 가지고 이용하네요 ^^

/// 방법 1 : 시작 ( 내부적을 전송만 하고 끝나는 형태 , 일반적으로 통신형태에 유용한듯 )
/// 실제 테스트는 안해봣음 소스는 이상없는데 web server 가 나한테 없어 왔는지는 모름

HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create("www.test.com"); // 객체를 생성한다.
hwr.Method = "POST"; // 포스트 방식으로 전달
hwr.ContentType = @"application/x-www-form-urlencoded";
byte[] buffer = Encoding.Default.GetBytes(str_sendvalue);
hwr.ContentLength = buffer.Length;
Stream sendStream = hwr.GetRequestStream(); // sendStream 을 생성한다.
sendStream.Write( buffer, 0, buffer.Length); // 데이터를 전송한다.
sendStream.Close(); // sendStream 을 종료한다.

/// 방법 1 : 종료



/// 방법 2 : 시작 ( 브라우져를 새창으로 띄워 화면을 보는 방식 , 사이트 연동에 적당한듯 )
/// 한글까지 잘 넘어가는거 확인했습니다. 잘되네요 ^^
object vHeaUrl = "www.test.com" ; // 호출할 url
object vFlag = 1; // 새창으로 띄우기
object framename = ""; // 이건 모르겟음
object buffer = Encoding.Default.GetBytes(str_sendvalue); // 데이터
object vHeaders = "Content-Type: application/x-www-form-urlencoded" + 0x10+ 0x13 ; // 헤더

AxSHDocVw.AxWebBrowser ie = new AxSHDocVw.AxWebBrowser(); // 브라유져를 만든다. 폼에 콤퍼넌트를 올려놓으시면 필요없습니다.
this.Controls.Add(ie); // 생성된 브라우져를 폼위에 올려 놓는다. 폼에 콤퍼넌트를 올려놓으시면 필요없습니다.
ie.Navigate2( ref vHeaUrl , ref vFlag ,ref framename, ref buffer, ref vHeaders ); // 호출한다.

/// 방법 2 : 종료


댓글