일부 웹 요청 및 게시 데이터를 수행하는 간단한 C# 프로그램을 작성하고 있습니다. 암호 및 html 형식의 항목으로 로그인하는 것과 같은 기본 작동 방식을 이해합니다. 그러나 나는 체크 박스와 텍스트 필드와 같은 입력 매개 변수 (예 :이 질문 페이지)가 많은지 궁금하다. 문자열에 20 개의 매개 변수를 하드 코딩하고 전달하는 것보다 효율적인 방법이 있습니까? html 파일을 읽고 구문을 분석하여 입력을 검사하고 문자열 작성기를 사용하여 문자열을 작성할 수 있지만 그렇게하는 것보다 효율적인 방법이 있습니까?C# HttpWebRequest Post 메서드 형태로 많은 매개 변수
private HtmlAgilityPack.HtmlDocument getpage(string url ,String input)
{
try
{
Stream datastream;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.CookieContainer = new CookieContainer();
request.CookieContainer.Add(cookies);
request.AllowAutoRedirect = true;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2";
request.ContentType = "application/x-www-form-urlencoded";
if (input!=null)
{
String postData = "";
request.Method = "POST";
if (input == "login")
{
postData = String.Format("username={0}&password={1}", "myusername", "mypassword");
}
else if (input == "sendMessage")
{
//THIS IS THE LONG STRING THAT I DON'T WANT TO HARD CODE
postData = String.Format("reciever={0}&sendmessage={1}", "thepersontomessage" ,this.DefaultMessage);
//I am just puting two parameters for now, there should be alot
}
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentLength = byteArray.Length;
datastream = request.GetRequestStream();
datastream.Write(byteArray, 0, byteArray.Length);
datastream.Close();
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
datastream = response.GetResponseStream();
String sourceCode = "";
using (StreamReader reader = new StreamReader(datastream))
{
sourceCode = reader.ReadToEnd();
}
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(sourceCode);
this.cookies.Add(response.Cookies);
return htmlDoc;
}
catch (Exception)
{
return null;
}
또한
내가 브라우저 (기본적으로 포스트 URL 문자열 및 전송 매개 변수 값) 내에서 HTML 형식의 버튼을 클릭하면 설정 매개 변수 값이 무엇인지 볼 수있는 간단한 방법이 그래서 내가 할 수있는
var parms = new Dictionary<string,string>();
parms.Add("username","fred");
그런 다음 방법은 수 있습니다 다음 Postdatastring에 해당 값 (체크 박스, 텍스트 등) 개인적으로 내가 어떻게 할 것인지
가 브라 우어가 서버에 전송을 확인하려면을 (http://fiddler2.com) – Alex