[英]POST request using C# WebClient
我想使用 WebClient 發出 Web 請求,但我的問題是未發送參數或 [已提交]
代碼:-
private void Button1_Click(object sender, EventArgs e)
{
string URI = "http://127.0.0.1/file/function/load.php";
string myParameters = "?machinename=ncemachine&opreationsystem=Windows7&cpu=inteli3&gpu=nvidiaGTX&netframework=5.4&ram=4GB";
using (WebClient wc = new WebClient())
{
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string HtmlResult = wc.UploadString(URI, myParameters);
}
}
加載文件
<?php
$MachineName = $_GET['machinename'];
$OpreationSystem = $_GET['opreationsystem'];
$cpu = $_GET['cpu'];
$gpu = $_GET['gpu'];
$netframework = $_GET['netframework'];
$ram = $_GET['ram'];
require_once '../conf.php';
echo'test';
$dbCon = "mysql:host=$host;dbname=$db_name";
$conn = new PDO($dbCon, $username, $password);
$getquery = $conn->prepare("INSERT INTO `players` (`id`, `Pcname`, `opreationsystem`, `cpu`, `gpu`, `netframework`, `ram`) VALUES (NULL, '".$MachineName."', '".$OpreationSystem."', '".$cpu."', '".$gpu."', '".$netframework."', '".$ram."')");
$getquery->execute();
?>
上面的代碼只給出了玩家表中的空行
根據文檔( https://docs.microsoft.com/en-us/dotnet/api/system.net.webclient.uploadstring?view=net-5.0 ),UploadString 默認發送 POST 請求。
因此,如果在 PHP 中用$_POST
替換對$_GET
所有引用,它應該會找到變量。
或者,您可以在調用 UploadString 時指定 HTTP 方法,例如
wc.UploadString(URI, "GET", myParameters)
該方法重載的特定文檔: https : //docs.microsoft.com/en-us/dotnet/api/system.net.webclient.uploadstring? view = net-5.0# System_Net_WebClient_UploadString_System_String_System_String_System_String _
PS 您的代碼容易受到 SQL 注入攻擊。 您正在使用准備好的語句,但除非您還使用參數,否則不會提供任何保護。 請參閱如何防止 PHP 中的 SQL 注入? 有關如何在 PHP 中安全地創建查詢的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.