.net后面的代码表单

我想在后面的代码中创建一个post。 我有简单的htmlpost正在工作但是当我尝试使它成为WebRequest我无法使它工作。

在此先感谢您的时间。

这是工作>

   Untitled Page   

这不起作用>

 String ali = "Mert123xxxx213asdsa" + "123Auth12345678912345670113123" + "10xx112345678912"; WebRequest req = WebRequest.Create("http://www.pay-pos.com/test.php?datafromuser=" + ali); req.Credentials = CredentialCache.DefaultCredentials; req.Method = "POST"; HttpWebResponse loWebResponse = (HttpWebResponse)req.GetResponse(); Encoding enc = Encoding.GetEncoding(1254); StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(), enc); string lcHtml = loResponseStream.ReadToEnd(); loWebResponse.Close(); loResponseStream.Close(); 

编辑:实验1

 String postData = "Name=Mert" + "&Password=123" + "&ClientId=1058" + "&IPAddress=213.456.654.456" + "&Adress=asdsa" + "&OrderId=123" + "&Type=Auth" + "&Number=4522115422659661" + "&ExpiresAy=01" + "&ExpiresYil=13" + "&Cvv2Val=123" + "&Total=10" + "&Taksit=1" + "&Kdv=18" + "&BankaID=1" + "&TcKimlik=12345678912"; string URI = "http://www.pay-pos.com/test.php"; WebClient wc = new WebClient(); wc.Headers["Content-type"] = "application/x-www-form-urlencoded"; string HtmlResult = wc.UploadString(URI, postData); 

实验2

  HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("http://www.pay-pos.com/test.php"); request.Method = WebRequestMethods.Http.Post; request.ContentLength = postData.Length; request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = false; //also tried true as well StreamWriter writer = new StreamWriter(request.GetRequestStream()); writer.Write(postData); writer.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); String responseString = reader.ReadToEnd(); response.Close(); 

实验3 !!!工作!!!

 String ali = "datafromuser=Mert1231058213.456.654.456asdsa123Auth" + "4522115422659661011312310181"+ "12345678912"; byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(ali); WebRequest req = WebRequest.Create("http://www.pay-pos.com/test.php"); req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = byteArray.Length; req.Method = "POST"; Stream dataStream = req.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); HttpWebResponse response = (HttpWebResponse)req.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); String responseString = reader.ReadToEnd(); response.Close(); 

我看错的第一件事是你试图使用查询字符串来发布表单数据。 您的“表单数据”应如下所示:

  String ali = "datafromuser=Mert123xxxx213asdsa" + "123Auth12345678912345670113123" + "10xx112345678912"; 

接下来,您需要从表单数据中获取bytes []。

 byte[] byteArray = Encoding.UTF8.GetBytes(ali); 

设置一些标题:

 req.ContentType = "application/x-www-form-urlencoded"; req.ContentLength = byteArray.Length; req.Method = "POST"; 

现在将数据写入请求流。

 Stream dataStream = req.GetRequestStream(); dataStream.Write(byteArray, 0, byteArray.Length); dataStream.Close(); 

最后……得到你的回复。 另请注意,实现IDisposable的任何内容都应该包含在using语句中,即StreamWebResponse

另请注意,提交按钮不是表单发布数据的一部分。 服务器可能会期待它。

编辑:这是Microsoft的一个完整示例,它将指导您一步一步。

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

这可能对你有帮助。

 string URI = "http://www.myurl.com/post.php"; string myParamters = "param1=value1&param2=value2"; WebClient wc = new WebClient(); wc.Headers["Content-type"] = "application/x-www-form-urlencoded"; string HtmlResult = wc.UploadString(URI, myParameters); 

这是一个简单的例子。 postData取决于forms

 String postData = "Name=" + Username + "&Password=" + Password + "&Retype=" + Password + "&Email=" + HttpUtility.UrlEncode(EmailAddress) + "&RealName=" + String.Format("{0}+{1}", FirstName.Replace(" ", "+"), LastName.Replace(" ", "+")); 

现在创建请求和发布数据:

 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url); request.Method = WebRequestMethods.Http.Post; request.ContentLength = postData.Length; request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = false; StreamWriter writer = new StreamWriter(request.GetRequestStream()); writer.Write(postData); writer.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(response.GetResponseStream()); String responseString = reader.ReadToEnd(); response.Close(); 

您可以使用Fiddler来捕获postData的外观。

试试这样吧。

 using (WebClient client = new WebClient()) { byte[] response = client.UploadValues("http://dork.com/service", new NameValueCollection() { { "home", "Cosby" }, { "favorite+flavor", "flies" } }); } 

您将需要这些包括:

 using System; using System.Collections.Specialized; using System.Net; 

如果您坚持使用静态方法/类:

 public static class Http { public static byte[] Post(string uri, NameValueCollection pairs) { byte[] response = null; using (WebClient client = new WebClient()) { response = client.UploadValues(uri, pairs); } return response; } } 

那简单地说:

 Http.Post("http://dork.com/service", new NameValueCollection() { { "home", "Cosby" }, { "favorite+flavor", "flies" } });