繁体   English   中英

如何从C#接收ASP网站上的数据?

[英]How to receive data on asp website from c#?

我使用c#控制台应用程序将数据发送到本地网站。 发送数据的功能是:

    public static HttpWebRequest GetRequest(String url, NameValueCollection nameValueCollection)
    {
        // Here we convert the nameValueCollection to POST data.
        // This will only work if nameValueCollection contains some items.
        var parameters = new StringBuilder();

        foreach (string key in nameValueCollection.Keys)
        {
            parameters.AppendFormat("{0}={1}&",
                HttpUtility.UrlEncode(key),
                HttpUtility.UrlEncode(nameValueCollection[key]));
        }

        parameters.Length -= 1;

        // Here we create the request and write the POST data to it.
        var request = (HttpWebRequest)HttpWebRequest.Create(url);
        request.Method = "POST";

        using (var writer = new StreamWriter(request.GetRequestStream()))
        {
            writer.Write(parameters.ToString());
        }

        return request;
    }

url和NameValueCollection是正确的。 但我无法在网站上收到任何信息。 网站代码是:

    System.IO.StreamReader reader = new System.IO.StreamReader(HttpContext.Current.Request.InputStream);

    string requestFromPost = reader.ReadToEnd();
    Response.Write(requestFromPost);

我是asp.net的新手。 我想念什么?

尝试这个。

var parameters = new StringBuilder();

foreach (string key in nameValueCollection.Keys)
{
    parameters.AppendFormat("{0}={1}&",
        HttpUtility.UrlEncode(key),
        HttpUtility.UrlEncode(nameValueCollection[key]));
}

parameters.Length -= 1; 

var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";

// Every so often I've seen weird issues if the user agent isn't set
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";

// encode the data for transmission
byte[] bytedata = Encoding.UTF8.GetBytes(parameters.ToString());

// tell the other side how much data is coming
request.ContentLength = bytedata.Length; 

using (Stream writer = request.GetRequestStream())
{
    writer.Write(bytedata, 0, bytedata.Length);
}
String result = String.Empty;

using (var response = (HttpWebResponse)request.GetResponse()) {
    using(StreamReader reader = new StreamReader(response.GetResponseStream())) {
        result = reader.ReadToEnd(); // gets the response from the server
        // output this or at least look at it.
        // generally you want to send a success or failure message back.
    }
}

// not sure why you were returning the request object.
// you really just want to pass the result back from your method
return result; 

您可能希望将以上大部分内容包装在try..catch 如果发布失败,则将引发异常。


在接收端,这要容易一些。 您可以执行以下操作:

String val = Request.QueryString["myparam"];

或者只是遍历查询字符串集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM