2011-10-23 87 views
0

我正在開發一個項目,我需要將變量作爲文章發送到PHP腳本。通過POST將C#變量發送到PHP

C#調用一些方法來設置字符串變量,然後我需要將其發佈到PHP腳本中,以便PHP腳本可以使用變量中的數據。

我該如何去做這件事,我試過谷歌,但他們都看起來有點複雜,也如何從PHP返回數據,這是很難解決後開始和完成在示例中的位置。

我只需要知道如何將數據發佈到腳本,而不是C#,然後閱讀PHP腳本所做的事情。

感謝您提供的任何幫助。

UPDATE 我不認爲我已經很好地解釋了我想達到的目的。

這樣做的目的是將數據以字符串格式發送到PHP頁面。然後,我想將腳本加載到用戶Web瀏覽器中,他們將能夠看到php頁面,並且當他們從php頁面提交表單時,可以使用發送給它的帖子中的信息。

下面是一個逐步的會發生什麼

  1. 用戶的步驟在C#程序按下按鈕
  2. C#程序設置字符串變量
  3. C#發送後到PHP頁面
  4. 同php頁面被加載到用戶瀏覽器中
  5. 當頁面加載時它會將來自c#的發佈數據處理成變量,因此可以使用數據
  6. 用戶提交表單,並將處理後的數據連同表單POST數據

希望這是多一點的意義上使用,這就是爲什麼我說我不想C#返回什麼PHP腳本在做什麼因爲用戶需要能夠使用php頁面。

+0

可以使用的WebRequest/WebResponse的做到這一點。 – eugeneK

+0

已將php標記移除爲不相關的標記。另一方面的語言並不重要。它只是普通的HTTP調用。而且,你知道,你不能在程序之外的任何地方發送變量。你只能發送一個字符串。 –

回答

1

檢查了這一點:

public static string Post(string service, IDictionary<string, string> objects) 
    { 
     // Create a request using a URL that can receive a post. 
     WebRequest request = WebRequest.Create(ServiceAdress+service+".php"); 
     // Set the Method property of the request to POST. 
     request.Method = "POST"; 
     // Create POST data and convert it to a byte array. 

     StringBuilder b= new StringBuilder(); 
     foreach(KeyValuePair<string,string> o in objects) 
      b.Append(HttpUtility.UrlEncode(o.Key)).Append("=").Append(HttpUtility.UrlEncode(o.Value??"")).Append("&"); 
     if (PHPSESSID != null) 
      b.Append("PHPSESSID=").Append(PHPSESSID).Append('&'); 

     string postData = b.ToString(0, b.Length - 1); 
     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     request.ContentType = "application/x-www-form-urlencoded"; 
     request.ContentLength = byteArray.Length; 
     Stream dataStream = request.GetRequestStream(); 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     dataStream.Close(); 
     WebResponse response = request.GetResponse(); 

     if (((HttpWebResponse)response).StatusCode != HttpStatusCode.OK) 
      return null; 

     dataStream = response.GetResponseStream(); 
     StreamReader reader = new StreamReader(dataStream); 
     string responseFromServer = reader.ReadToEnd(); 
     Console.WriteLine(responseFromServer); 
     reader.Close(); 

     dataStream.Close(); 
     response.Close(); 
     return responseFromServer; 
    }