public static string Post(string url, string content)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded";
#region 添加Post 引數
byte[] data = Encoding.UTF8.GetBytes(content);
req.ContentLength = data.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(data, 0, data.Length);
reqStream.Close();
}
#endregion
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
Stream stream = resp.GetResponseStream();
//獲取回應內容
using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
return result;
}
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<form action="welcome.php" method="post">
測驗: <input type="text" name="fname">
<input type="submit" value="https://bbs.csdn.net/topics/提交">
</form>
</body>
</html>
<?php
print_r($_POST["fname"]);
?>



正在在網頁上填寫內容,提交后可以正常在瀏覽器顯示內容,但是在c#里面用方法提交過去以后,居然把介面頁面給列印出來了,求大佬指點哪錯了,感謝大佬
uj5u.com熱心網友回復:
你C#引數傳的什么值?還有你把提交和回應都寫在這一個方法里,是什么邏輯uj5u.com熱心網友回復:
從回應結果看,你通過http post請求了post.php,這個結果是符合預期的正常結果,但也有點問題。不清楚你的目的是什么,單看post.php和welcome.php:
1. post.php的mime是text/html,并且訪問post.php頁面應該用是GET請求(但你用了post),既然你請求了一個html,回傳一個頁面的html自然在預期之中。
2. 如果需要訪問welcome.php,那就帶上引數直接請求welcome.php,在這種情況下,post.php和你的C#代碼做了相同的事情,是等效的。同樣地,直接F12,在控制臺$.post("/welcome.php"……) 這是用第三種方法做了相同的一件事。
這中間的邏輯需要你再重新審視一下自己的需求,到底想做1,還是想做2。
uj5u.com熱心網友回復:
如果我沒有說清,那么可以這么理解:1. 打開瀏覽器,訪問post.php;
2. 填寫表單,提交,跳轉到welcome.php。
整個流程里有兩個動作,對應用c#來做:
1. http get請求post.php,即你現在正在做的事(最好改成http get);
2. http post welcome.php,即你預期要做,以為自己已經做了,實際上卻沒有做的事。
當然如果真用c#來處理,步驟1是多余的。
uj5u.com熱心網友回復:
另外還有一個可能會出問題的地方,你的C#介面是一個http get請求的介面,傳參的時候,不管是url,還是準備發到welcome.php的內容,都有可能被轉義,導致發到welcome.php的內容發生變化。避免這個問題可以用url_encode,或者直接把C#介面改成[httppost]轉載請註明出處,本文鏈接:https://www.uj5u.com/net/251258.html
標籤:C#
上一篇:串口 發送問題,在線等
