2009-06-03 2 views
2

Я ищу встроенную метод полезности в .NET для построения HTTP POST тела сообщения для двух общих типов контента:Встроенные методы для создания тела запроса POST в .NET?

  • применения/х-WWW-форм-urlencoded
  • многочастных/form-data

Я бы предпочел использовать чужую готовую и проверенную реализацию, чем рулон, хотя я понимаю, что это не сложно. Однако, похоже, в этом нет ничего в System.Web.

Любые предложения?

(Нет необходимости объяснять, как построить тело POST сообщения вручную ... это не то, что этот вопрос о)

ответ

0

Для типа application/x-www-form-urlencoded контента, просто использовать метод UrlEncode.

Пример (в C#):

string body = 
    "this=" + HttpUtility.UrlEncode(valueForThis) + 
    "&" + 
    "that=" + HttpUtility.UrlEncode(valueForThat) + 
    "&" + 
    "more=" + HttpUtility.UrlEncode(valueForMore); 
+0

Спасибо, но это то, что я имел в виду «вручную». Я сделаю это, если нет другого пути. –

-2
Imports System.IO 
Imports System.Net 

Private Function PostWebPage(ByVal argUrl As String) As String 
    Dim objWebRequest As HttpWebRequest 
    Dim sPostData As New StringBuilder 
    Dim sr As StreamReader 
    Dim objWebResponse As HttpWebResponse 
    If argUrl.Length > 0 Then 
     Try 
      objWebRequest = CType(WebRequest.Create(argUrl), HttpWebRequest) 
      objWebRequest.UserAgent = "Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+.NET+CLR+1.1.4322;+.NET+CLR+1.0.3705)" 
      sPostData.Append("accountType=GOOGLE&Email=*******@gmail.com&Passwd=*******&service=analytics&source=Test") 
      objWebRequest.Method = "POST" 
      objWebRequest.ContentType = "application/x-www-form-urlencoded" 
      objWebRequest.ContentLength = sPostData.ToString.Length 
      Dim stOut As New StreamWriter(objWebRequest.GetRequestStream, System.Text.Encoding.ASCII) 
      stOut.Write(sPostData) 
      stOut.Close() 
      objWebRequest.AllowAutoRedirect = True 
      objWebRequest.Timeout = 10000 
      objWebRequest.KeepAlive = True 
      objWebResponse = CType(objWebRequest.GetResponse(), HttpWebResponse) 
      sr = New StreamReader(objWebResponse.GetResponseStream) 
      Return sr.ReadToEnd 
      Exit Function 
     Catch ex As Exception 
     End Try 
    End If 
    Return "" 
End Function 
+0

-1 - извините, но вопрос в том, как построить sPostData - в вашем примере это всего лишь заданная строка. –

+0

Попробуйте это - http://weblogs.asp.net/mikedopp/archive/2008/02/04/paypal-payflow-pro-code.aspx – Mike

Смежные вопросы