2012-03-17 6 views

답변

3

. 그리고 GET을 사용하면 URL의 끝 부분에 붙일 수 있기 때문에 POST을하고 있다고 가정합니다.

그래서, 당신은 먼저 웹 요청의 요청 스트림에 기록되어있는 POST의 몸 작성해야합니다 :이 시점에서

var sb = new StringBuilder(); 
foreach(var item in myCollection) { 
    sb.AppendFormat("{0}={1}&", item.Name, HttpUtility.UrlEncode(item.Value.ToString())); 
} 
sb.Remove(sb.Length - 1, 1); // remove the last '&' 

을, 당신은 같은 문자열을 포함하는 문자열 버퍼를해야합니다 "myVal1=Hello%20World&myVal2=5". 이제 요청 스트림에 작성하려고합니다.

var request = (HttpWebRequest)HttpWebRequest.Create("http://somewhere.url/asdf/asdf"); 
request.Method = "POST"; 
var stream = request.GetRequestStream(); 
var bytes = Encoding.UTF8.GetBytes(sb.ToString()); 
request.ContentType="application/x-www-form-urlencoded;charset=UTF-8"; 
request.ContentLength = data.Length; 
stream.Write(bytes, 0, bytes.Length); 
stream.Close(); 
var response = (HttpWebResponse)request.GetResponse(); 
// ... process the response ... 

희망이 있습니다. 귀하의 NameValueCollection이 string -> object 형태로 있다고 가정했습니다. "item.Value"부분이 다른 경우이를 조정하십시오. 나는 URL 인코딩 키를 받아들이지 않는다고 생각하기 때문에 한 쌍의 키 인코딩도하지 않았다.

WebRequest 클래스는 바이트를 기대하지만
0

먼저 NameValueCollection을 serialize해야합니다.

String str = ""; 

str = mynvc.key + "=" + mynvc.value; 

다음 바이트 배열이 문자열을 변환하려면이 옵션을 사용 WebRequest 그냥 추상 클래스이기 때문에 나는, 당신이 HttpWebRequest을 의미 있으리라 믿고있어

System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding(); 
Byte[] myStr = encoding.GetBytes(str); 
+0

이것은 컬렉션에 하나의 값만 있다고 가정합니다. 값이 여러 개인 경우이를 구분하는 방법은 무엇입니까? – shashi

+0

NVC 항목을 어떻게 유지하는지 모르기 때문에이 방법으로 작성했습니다. 래퍼 객체가 있습니까? foreach를 사용하면됩니다. –

관련 문제