1
<form action="https://somewebsiteaddrest" method="post">
   <input name="Var1"  type="hidden" value="Variable 1 value" />
   <input name="Var2"  type="hidden" value="Variable 2 value" />
   <input name="Var3"  type="hidden" value="Variable 3 value" />
   <input name="Var4"  type="hidden" value="Variable 4 value" />
   <input name="Var5"  type="hidden" value="Variable 6 value" />
   <input type="submit" value="Go now" />
</form>

我想在不使用此表单和javascript frm.submit()的情况下创建相等的发布方法和重定向(在 C# 中) ;

我有一个 C# 代码片段,我希望能做这些事情。

    WebRequest request = WebRequest.Create(url);
    request.Method = "POST";
    string postData = "What to write here? here should be variable i guess.";
    byte[] byteArray = Encoding.UTF8.GetBytes(postData);
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = byteArray.Length;
    Stream dataStream = request.GetRequestStream();
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();
    WebResponse response = request.GetResponse();
    Console.WriteLine(((HttpWebResponse)response).StatusDescription);
    dataStream = response.GetResponseStream();
    StreamReader reader = new StreamReader(dataStream);
    string responseFromServer = reader.ReadToEnd();
    Console.WriteLine(responseFromServer);
    reader.Close();
    dataStream.Close();
    response.Close();


string postData

在 postData 中写什么以获得与使用formand相同的效果form.submit()?提前致谢

4

3 回答 3

1

帖子数据应该是 URL 编码的表单数据,即由&字符分隔的 key=value 对。使用该UrlEncode方法对值进行编码:

string postData =
  "Var1=" + HttpUtility.UrlEncode("Variable 1 value")+
  "&Var2=" + HttpUtility.UrlEncode("Variable 2 value")+
  "&Var3=" + HttpUtility.UrlEncode("Variable 3 value")+
  "&Var4=" + HttpUtility.UrlEncode("Variable 4 value")+
  "&Var5=" + HttpUtility.UrlEncode("Variable 6 value");
于 2012-11-01T08:29:30.777 回答
0

PostData="Var1=xxx&Var2=yyyy...."

于 2012-11-01T08:28:18.347 回答
0

POST 请求提供了一个使用 URL 编码来发送数据的正文。

您可以使用此方法对数据进行编码。

所以例如你可以有这样的代码:

string ToQueryString(IEnumerable data)
{
    return string.Join("&", data.Select(d => HttpUtility.UrlEncode(d.ToString())));
}
于 2012-11-01T08:28:37.930 回答