问题 如何将数据发布到网站


我需要将数据发布到网站上。所以我在C#.net中创建了一个小应用程序,在那里我打开这个网站并用我的数据库中的值填充所有控件(单选按钮,文本框,复选框等)。我还在SUBMIT按钮上有一个点击事件。然后应用程序等待10-15秒,然后将响应从网页复制到我的数据库。

如你所见,这真是一个繁忙的过程。如果要上传数千条记录,则此应用程序需要更长时间(因为它等待响应的时间为15秒)。

有没有其他方式发布数据?我正在寻找像所有字段连接其值并像上传数据流一样上传的东西。如果网站是https而不是http,这将如何工作?


8018
2017-12-16 18:54


起源



答案:


您可以使用 HttpWebRequest的 为此,您可以将要发布的所有值连接到请求的单个字符串中。它可能看起来像这样:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.yoursite.com");
request.Method = "POST";

formContent = "FormValue1=" + someValue +
    "&FormValue2=" + someValue2 +
    "&FormValue=" + someValue2;

byte[] byteArray = Encoding.UTF8.GetBytes(formContent);
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();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = HttpUtility.UrlDecode(reader.ReadToEnd());
//You may need HttpUtility.HtmlDecode depending on the response

reader.Close();
dataStream.Close();
response.Close();

对于http和https,此方法应该可以正常工作。


12
2017-12-16 19:01



我差点忘了告诉你我需要访问的链接需要使用用户名和密码登录。如何在此代码中加入它? - McDee
这是我现在正在使用浏览器做的事情。第1页:输入登录信息。按提交第2页:有2帧。在顶部框架中,我输入电子邮件地址并单击“加载记录”。这将填充底部框架2中的所有信息。 - McDee
我需要帮助,我也想将我的数据转移到 eservice.dohms.gov.ae/pservices/CreatePID0.aspx 给定网站。有可能?? - Bhupendra


答案:


您可以使用 HttpWebRequest的 为此,您可以将要发布的所有值连接到请求的单个字符串中。它可能看起来像这样:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://www.yoursite.com");
request.Method = "POST";

formContent = "FormValue1=" + someValue +
    "&FormValue2=" + someValue2 +
    "&FormValue=" + someValue2;

byte[] byteArray = Encoding.UTF8.GetBytes(formContent);
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();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = HttpUtility.UrlDecode(reader.ReadToEnd());
//You may need HttpUtility.HtmlDecode depending on the response

reader.Close();
dataStream.Close();
response.Close();

对于http和https,此方法应该可以正常工作。


12
2017-12-16 19:01



我差点忘了告诉你我需要访问的链接需要使用用户名和密码登录。如何在此代码中加入它? - McDee
这是我现在正在使用浏览器做的事情。第1页:输入登录信息。按提交第2页:有2帧。在顶部框架中,我输入电子邮件地址并单击“加载记录”。这将填充底部框架2中的所有信息。 - McDee
我需要帮助,我也想将我的数据转移到 eservice.dohms.gov.ae/pservices/CreatePID0.aspx 给定网站。有可能?? - Bhupendra


MSDN有一篇很棒的文章,详细介绍了如何使用WebRequest类发送数据的分步说明。下方链接:

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx


3
2017-12-16 18:58





是的,有一个 WebClient 类。调查 文件。有一些usful方法可以发出GET和POST请求。


1
2017-12-16 18:58