如何通过win forms将数据发布到网站c#
Posted
技术标签:
【中文标题】如何通过win forms将数据发布到网站c#【英文标题】:How to Post Data to a website through win forms c# 【发布时间】:2012-12-04 11:48:07 【问题描述】:我有一个 api,我可以在其中发布一些数据并提交,然后获取发布的数据是否有效。此 api 重定向到指示成功/失败的不同 url。 为此我通常做的是,在 html 标签中调用目标 url 并提交页面:
<form method="post" action="https://web.tie.org/verify.php" name="main">
<table border="0" cellpadding="0" cellspacing="0" align="center" valign="top">
<tr>
<td class="normal"> </td><td class="normal"><input type='text' class='text' name='Email' value='x@hotmail.com' size='15' maxlength='35'></td>
</tr>
</table>
</form>
<script language='javascript'>
document.forms[0].submit();
</script>
有没有办法通过winforms c#直接发布数据。 我希望能够在发布后访问成功/失败 url 并获取重定向站点的查询字符串。
参考enter link description here我已经尝试过发布,但我需要结果查询字符串。
现在我可以通过以下方式实现:
webBrowser1.Url = new Uri("C:\\Documents and Settings\\Admin\\Desktop\\calltie.html");
webBrowser1.Show();
【问题讨论】:
【参考方案1】:是的,你可以使用 WebClient 类。
public static string PostMessageToURL(string url, string parameters)
using (WebClient wc = new WebClient())
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string HtmlResult = wc.UploadString(url,"POST", parameters);
return HtmlResult;
例子:
PostMessageToURL("http://tempurl.org","query=param1&query2=param2");
【讨论】:
PostMessageToURL 方法返回结果 :) My PostMessageToURL("tempurl.org","query=param1&query2=param2"); 反过来重定向到:query=param1 并附加到该查询字符串。我需要重定向的查询字符串来提取激活状态。例如,成功将重定向到 param1?valid=yes&exp=a 。我想知道什么是有效的并且 exp 等于 @Pavitar,请参阅下面我更新的答案,您需要拉出 responseUri。我不确定 WebClient 是否为您提供了足够的详细信息来阅读这样的标题。 这取决于请求的url如何重定向到新页面。通过调用javascript函数? 304方法o将位置设置为标题? 这个FieldInfo responseField = webclient.GetType().GetField("m_WebResponse", BindingFlags.Instance | BindingFlags.NonPublic);
成功了。 :)【参考方案2】:
当然,看看WebRequest,这里有一个完整的例子
http://msdn.microsoft.com/en-us/library/debx8sh9.aspx
然后你就可以做这种事情了
UriBuilder uriBuilder = new UriBuilder(url);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uriBuilder.Uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = bytesToPost.Length;
using(Stream postStream = request.GetRequestStream())
postStream.Write(bytesToPost, 0, bytesToPost.Length);
postStream.Close();
HttpWebResponse response = (HttpWebResponse )request.GetResponse();
string url = response.ResponseUri
最后一行将为您提供您所追求的 URL(成功/失败)
【讨论】:
【参考方案3】:我目前正在处理它..这是运行代码尝试它..
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("www.linktoposton.php");
req.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(content);
req.ContentType = "application/x-www-form-urlencoded";
req.ContentLength = byteArray.Length;
Stream dataStream = req.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
WebResponse response = req.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = HttpUtility.UrlDecode(reader.ReadToEnd());
reader.Close();
dataStream.Close();
response.Close();
Application.DoEvents(); // optional
只需将Httpwebrequest中的url(“www.linktoposton.php”更改为您要发送的链接)
【讨论】:
以上是关于如何通过win forms将数据发布到网站c#的主要内容,如果未能解决你的问题,请参考以下文章
如何修改查询表达式以获得灵活的结果 - Win Forms C#
如何通过 Web.config 或 C# 将所有内容重定向到 https://www。网站的版本?