2014-03-12 70 views
0

我想發送的字符串我的PHP頁面,我使用的答案中,只有一個網站發送字符串到PHP頁面

C#代碼:

try 
     { 
      string url = "http://localhost:8080/test.php"; 
      string str = "test"; 
      HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
      req.Method = "POST"; 
      string Data = "message=" + str; 
      byte[] postBytes = Encoding.ASCII.GetBytes(Data); 
      req.ContentType = "application/x-www-form-urlencoded"; 
      req.ContentLength = postBytes.Length; 
      Stream requestStream = req.GetRequestStream(); 
      requestStream.Write(postBytes, 0, postBytes.Length); 
      requestStream.Close(); 

      HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
      Stream resStream = response.GetResponseStream(); 

      var sr = new StreamReader(response.GetResponseStream()); 
      string responseText = sr.ReadToEnd(); 


     } 
     catch (WebException) 
     { 

      MessageBox.Show("Please Check Your Internet Connection"); 
     } 

和PHP代碼:

if (isset($_POST['message'])) 
{ 
    $msg = $_POST['message']; 
    echo $msg; 
} 

但它只是一個空白頁。 有人可以告訴我什麼是錯?

謝謝。

回答

0

我不確定設置「message =」+數據會在post數組中創建一個名爲message的項目:它可能只是創建一個包含內容的unnammed項目「message = blahblahblajh」。 你可以在你的PHP這樣做驗證這一理論:

foreach($_POST as $pdata) 
echo " *-* ". $pdata." *-*<br> "; 

我不使用HttpWebRequest的這一點,但你可以嘗試使用WebClient類:

string url = "http://localhost:8080/test.php"; 
    string str = "test"; 
    WebClient webClient = new WebClient();    
    NameValueCollection formData = new NameValueCollection();   
    formData["message"] = str; 
    byte[] responseBytes = webClient.UploadValues(URL, "POST", formData);   
    string responsefromserver = Encoding.UTF8.GetString(responseBytes); 
Console.WriteLine(responsefromserver);   
    webClient.Dispose(); 

唉,我我目前無法嘗試這種方式,所以這是來自內存和谷歌!

+0

哪個庫我應該用namevaluecllection? – user3142031

+0

System.Collections.Specialized – Kell

+0

謝謝你的回覆,但它仍然只是一個空白頁 – user3142031

0

如果您在運行代碼之後從瀏覽器訪問網頁,您會看到一個空白頁面,因爲您的瀏覽器沒有發送帖子請求,您的應用程序爲了查看您的回覆,只顯示消息箱或文本框中的響應文本。即

MessageBox.Show(responseText);