使用POST方法将数据从WinForm传递到WebForm并检索它

时间:2015-04-24 13:42:22

标签: c# asp.net post webforms

有没有人知道通过int方法从Windows表单应用程序发送stringbyte[]'POST'的简单方法,并获取此数据ASP.NET WebForm?

所以,实际上:

Form1 (data) -→ (data) WebPage1.aspx

以下是我现在在代码中的内容: 客户方:

    String idtostring = "id=" + opid.ToString();
    intarray = Encoding.ASCII.GetBytes(idtostring);
    startlog(intarray);

    private void startlog(byte[] array)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:51146/MyPage.aspx");
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        request.ContentLength = array.Length;
        var Url = "http://localhost:51146/MyPage.aspx";
        wb.Navigate(Url, true);
        Stream postdata = request.GetRequestStream();
        postdata.Write(array, 0, array.Length);
        postdata.Close();
    }

服务器端:

    private String getpostdata()
    {
        return Request.Form["id"];
    }

这会返回null ...我不知道问题是在客户端还是在服务器端。我需要做的是从客户端发送一个类似于" id = 7"通过POST方法将其恢复到服务器上。我使用我自定义的身份验证用户,因此我需要在Web浏览器中显示用户将通过身份验证的会话。

更新: 我不确定Request.Form是否适合观看......

请参阅此图片,其中显示了断点所带来的内容(我是新的,所以暂时无法发布图片)→http://i.stack.imgur.com/3VTyL.png

我刚试过这个:

    private void startlog(byte[] array)
    {
        var Url = "http://localhost:51146/MyPage.aspx";
        wb.Navigate(Url, "_blank", array, "");
    }

结果完全一样......

1 个答案:

答案 0 :(得分:1)

这是一个字符串示例。

var helloWorldString="HelloWorldKey=HelloWorldValue";
var array= Encoding.ASCII.GetBytes(helloWorldString);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:51146/MyPage.aspx");
request.Method = "POST";
request.ContentLength = array.Length;
request.ContentType = "application/x-www-form-urlencoded";
var Url = "http://localhost:51146/MyPage.aspx";
using(Stream postdata = request.GetRequestStream())
{
    postdata.Write(array, 0, array.Length);
}

在服务器上,您可以使用Request.Form["HelloWorldKey"];

进行阅读 整理比较棘手。将它们转换为客户端上的字符串,然后将它们解析为服务器上的int。

字节数组也是如此。将它们转换为客户端上的Base 64字符串,然后将它们转换回服务器上的字节数组。

最好使用HttpUtility对字符串值进行编码,而不是手动执行。有关详细信息,请参阅this answer