2011-07-07 33 views
1

以下是我正在嘗試做的事情。我有一個程序設置(它的工作原理,甚至發佈到演示頁面,我沒有代碼並返回正確的值,很快會發布代碼)和我使用的代碼,我不能找到關於如何從PHP讀取帖子的任何信息,並將變量返回給c#(用於測試階段)。我最終的目標是從帖子中收集信息並將其發送到與getpost.php頁面相同的站點上的其餘頁面。如果有人能幫助我,我會非常感激。從C#接收帖子到PHP

class WebPostRequest 
{ 
    WebRequest theRequest; 
    HttpWebResponse theResponse; 
    ArrayList theQueryData; 

    public WebPostRequest(string url) 
    { 
     theRequest = WebRequest.Create(url); 
     theRequest.Method = "POST"; 
     theQueryData = new ArrayList(); 
    } 

    public void Add(string key, string value) 
    { 
     theQueryData.Add(String.Format("{0}={1}", key, System.Web.HttpUtility.UrlEncode(value))); 
    } 

    public string GetResponse() 
    { 
     // Set the encoding type 
     theRequest.ContentType = "application/x-www-form-urlencoded"; 

     // Build a string containing all the parameters 
     string Parameters = String.Join("&", (String[])theQueryData.ToArray(typeof(string))); 
     theRequest.ContentLength = Parameters.Length; 

     // We write the parameters into the request 
     StreamWriter sw = new StreamWriter(theRequest.GetRequestStream()); 
     sw.Write(Parameters); 
     sw.Close(); 

     // Execute the query 
     theResponse = (HttpWebResponse)theRequest.GetResponse(); 
     StreamReader sr = new StreamReader(theResponse.GetResponseStream()); 
     return sr.ReadToEnd(); 
    } 

} 

就像我說的,在測試頁面上,一切正常,帖子正在接收到測試頁面並傳回到我的程序。

* * * UPDATE :::

好吧,我得到了我的網站上收集從C#應用程序的POST信息的PHP。現在我需要將這些信息轉發給用戶並將其重定向到我的其他網頁,以便他們可以完成他們的會話並完成他們在我的網站上的原因。

+0

我找到你想做的事情的描述混亂。您似乎在兩種情況下使用'post':http POST數據和在互聯網上發佈的日常用法。你顯示的C#代碼看起來像一個客戶端應用程序。你想知道如何使服務器託管的PHP頁面接受HTTP POST數據?還請解釋您爲什麼要接受並回顯相同的數據。 – horatio

+0

是我正在開發的這個應用程序是幫助診斷計算機問題。它收集來自客戶端的簡單信息,並將其報告回服務器,報告它收到信息,然後重定向到一個繼續頁面,通過PHP服務器端進一步診斷剩餘的信息。所有這些都在會話中完成,以消除用戶退出網站時的所有信息。 –

+0

我不知道你的需求是什麼。在我看來,這段代碼工作正常。你如何在你的PHP中調試C#的數據receveid? –

回答

0

來自其他來源的PHP和發佈數據有時會以奇怪的方式表現出來。 要找到YOUT問題,你可以做soemthing這樣的:

$post_from_c = json_decode(trim(file_get_contents('php://input')), true); 

的file_get_contents(「PHP://輸入」),這意味着你得到的原始數據,而不是由阿帕奇處理過的數據。

0

我想通了。我所做的是在PHP中收集帖子,並將其發送到臨時數據庫,並使用IP和客戶端密碼訪問客戶端已在的頁面調用信息(以消除同一IP地址上的多臺計算機)然後我創建了一個cron作業,在一段時間後清除所有數據,在我的情況下,我將其設置爲3小時,因爲無論如何,當時沒有人應該在該網站上。