[英]retrieving data in PHP by C# HttpWebRequest using PUT — C# -> PHP using Slim Rest Framework
我是Slim的新手,在使用“ PUT”通過httpwebrequest檢索數據發送內容時遇到一些問題。 我知道http不休息! ;)並且我知道數據發送正確。 所以,我想念什么? 是的,我可以通過標題發送所有數據,但是我不想使用這種解決方法。
所以這就是我要做的:
C#:
var request = WebRequest.Create(url) as HttpWebRequest;
request.ContentType = "application/x-www-form-urlencoded";
request.ProtocolVersion = HttpVersion.Version11;
request.KeepAlive = true;
// Set request method
request.Method = method.ToUpper(); // in this case: "PUT"
var dataByte = Encoding.UTF8.GetBytes("test=test"); // <-- DATA to be send
request.ContentLength = dataByte.Length;
using (Stream dataStream = request.GetRequestStream())
{
dataStream.Write(dataByte, 0, dataByte.Length);
}
var res = (HttpWebResponse)request.GetResponse();
var resStream = res.GetResponseStream();
if (resStream != null)
{
var reader = new StreamReader(resStream);
responseFromServer = reader.ReadToEnd();
reader.Close();
}
if (resStream != null) resStream.Close();
res.Close();
PHP:使用Slim和“ PUT”
$app->put('/someendpoint', function ($somevar) {
// THIS IST THE PLACE WHERE I NEED THE DATA : "test"
});
在使用POST或GET(當然)時效果很好,例如
if(isset($_POST['test']))
echo $_POST['test'];
但我需要類似的東西
$_PUT['test']
...我該怎么辦? 我敢肯定有解決方案,我認為外面的人可能對此有疑問。
提前感謝幫助我! :)
...找到它:我做了一些研究,並再次閱讀了本教程(...再一次...再一次...);)
我要做的就是使用這個簡單的函數來獲取正文信息以解析這些內容:
function verifyRequiredParams($required_fields) {
$error = false;
$error_fields = "";
$request_params = array();
$request_params = $_REQUEST;
// Handling PUT request params
if ($_SERVER['REQUEST_METHOD'] == 'PUT') {
$app = \Slim\Slim::getInstance();
parse_str($app->request()->getBody(), $request_params);
}
foreach ($required_fields as $field) {
if (!isset($request_params[$field]) || strlen(trim($request_params[$field])) <= 0) {
$error = true;
$error_fields .= $field . ', ';
}
}
if ($error) {
// Required field(s) are missing or empty
// echo error json and stop the app
$response = array();
$app = \Slim\Slim::getInstance();
$response["error"] = true;
$response["message"] = 'Required field(s) ' . substr($error_fields, 0, -2) . ' is missing or empty';
echoRespnse(400, $response);
$app->stop();
}
}
我不得不將我的api調用更改為:
$app->put('/someendpoint', function ($somevar) use($app){
verifyRequiredParams(array('test'));
$test= $app->request->put('test');
echo $test;
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.