簡體   English   中英

使用 C# WebClient 的 POST 請求

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM