我很難搞清楚將POST參數編碼爲服務器調用的最佳方式。我正在編寫一個將由PHP服務器提供服務的C#客戶端。我想在參數中允許很大的靈活性,所以我現在的計劃是使用JSON編碼的單個參數。例如:如何編碼HTTP POST參數(C#客戶端到PHP服務器)?
params = {"object":"Main","function":"doecho","params":["echothis...."]}
我使用的C#WebRequest對象和contentType中的 「application/X WWW的窗體-urlencoded;字符集= UTF-8」。數據到達服務器,一切都按預期工作,直到我在數據中添加非法JSON字符。
例如,如果我使用以下數據,那麼我無法在服務器端對其執行json_decode。服務器出現自動開機的40%投入一個雙引號(「),當我用$這個 - > Request()方法讀它 - > getParams()方法;(Zend_Framework)
params = {"object":"Main","function":"doecho","params":["echothis%25%5d%22%40%3d%26...."]}
什麼是最好的在這裏練習嗎?我需要base64編碼數據嗎?是否有什麼明顯我缺少的內容類型或PHP設置?
我完全控制客戶端和服務器,所以我想知道什麼是正確/最好的事情
是的,這對我有意義。謝謝! – Jeff
由於nit-picking可以防止bug,請注意「params」(但不是「=」)也應該是URI編碼的。因爲我知道當URI編碼的「params」仍然是「params」時,我不是一個快捷方式,但如果它是「párams」或「params」,那麼它必須是。 –