2011-01-07 1 views
0

데이터를 수집하는 페이지와 '다른 사이트에 게시'할 수 있습니다. 폼 태그의 작업에 사이트 URL을 넣을 수는 있지만 사이트를 전환하기 전에 데이터베이스에 정보를 기록하고 싶습니다. ActionResult에서 지금까지 내가 가진 :MVC2 ActionResult를 사용하면 다른 사이트로 (게시물)을 리디렉션 할 수 있습니다.

[HttpPost] 
    public ActionResult MyPage(MyPageModel model) 
    { 
     if (ModelState.IsValid) 
     { 
      StoreDate(model.fld1, model.fld2) 
      var encoding = new ASCIIEncoding(); 
      var postData = ""; 
      foreach (String postKey in Request.Form) 
      { 
       var postValue = Encode(Request.Form[postKey]); 
       postData += string.Format("&{0}={1}", postKey, postValue); 
      } 
      var data = encoding.GetBytes(postData); 

      // Prepare web request... 
      var myRequest = (HttpWebRequest)WebRequest.Create("https://www.site2.com"); 
      myRequest.Method = "POST"; 
      myRequest.ContentType = "application/x-www-form-urlencoded"; 
      myRequest.ContentLength = data.Length; 

      // Send the data. 
      Stream newStream = myRequest.GetRequestStream(); 
      newStream.Write(data, 0, data.Length); 
      newStream.Flush(); 
      newStream.Close(); 

는 사람이를 완료하고 다른 사이트에이 게시물을 데이터를 가지고 적절한 '반환'세인 것을 사용하는 방법을 알고 있나요.

다음 응답을 기반으로 스 니펫을 편집했습니다.

답변

0

POST가 이미 발생 했으므로 효과가있는 마법 총알 (예 : ActionResult)이 없습니다. 서버에서 POST 응답을 처리 중이므로 직접 대상 서버에 대한 POST 요청을 다시 작성해야합니다. 그렇게하려면 this answerHttpWebRequest을 사용해야합니다. HttpWebRequest에서 응답을받은 후에는 ContentResult을 통해 해당 응답을 다시 전달해야합니다. 결국, 그것은 사소한 일이 될 수 있지만 가능합니다.

업데이트 : 당신의 조각을 바탕으로, 나는 추가 시도하려는 다음

WebResponse res = myRequest.GetResponse(); 
StreamReader sr = new StreamReader(res.GetResponseStream()); 
string returnvalue = sr.ReadToEnd(); 
return Content(returnValue); 
+0

나는 이것을 한 순간에 가졌지 만 다음 단계를 알지 못했습니다. 응답으로 ContentResult를 어떻게 구축 할 수 있습니까? – Randy

+0

위의 발췌 문장을 편집했습니다. – Randy

+0

@Randy, 내 대답을 제안으로 수정했습니다. –

0

또 다른 옵션은 다른 사이트에있는 양식 작업을 가리 서버에 아약스 게시물을 할 것 양식을 제출하기 전에 HttpWebRequest를 사용하여 man-in-the-middle를 사용하는 것보다 훨씬 쉬울 것입니다.

+1

가운데에있는 사람이 옳습니다. 이런 종류의 질문은 항상 나에게 비린내가납니다. –

관련 문제