简体   繁体   中英

How to Post Data to a website through win forms c#

I have an api where in I can post some data n submit and then get whether posted data is valid or no. This api redirects to different urls indicating sucess/failure. For ths what I normally do is , within html tags call the destination url and submit the page:

    <form method="post" action="https://web.tie.org/verify.php" name="main">
<table width="100%" border="0" cellpadding="0" cellspacing="0" align="center" valign="top">
    <tr>
        <td class="normal">&nbsp;</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>

Is there a way to post data directly through winforms c#. I want to be able to access the success/failure url after post and get the query string of the redirected site.

With Reference to enter link description here I have tried posting but I need the result query string.

Right now I can achieve this by:

webBrowser1.Url = new Uri("C:\\Documents and Settings\\Admin\\Desktop\\calltie.html");            
webBrowser1.Show();

Absolutely, take a look at WebRequest, here is a full example

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

You can then do this kind of thing

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

and the last line will give you the URL (success/fail) you are after

Yes , you can use WebClient class.

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;
    }
}

Example:

PostMessageToURL("http://tempurl.org","query=param1&query2=param2");

I am currently working on it .. and this is running code try it..

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

Just change url in Httpwebrequest ("www.linktoposton.php" to the link you want to send)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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