如何将两个字符串的字典发送到服务器?

How do I send a two string Dictionary to a server?

我是 Unity(和 c#,以及 PHP)的新手,我的任务是让一些旧的 c# 和 PHP 代码正常工作。下面的代码应该将字典 (formData) 发送到 PHP 服务器,然后服务器将其转换为 json。代码如下:

...
//This code runs for each file that is uploaded, the file is a list of strings and integers.
Dictionary<string, string> formData = new Dictionary<string, string>();
using (StreamReader sr = file.OpenText())
            {
                string s = "";
                while ((s = sr.ReadLine()) != null)
                {
                    string[] data = s.Split(';');
                    uploadResultText.setText(file.Name + ":" + data[0] + " " + data[0]);
                    if (data[1] == "") data[1] = " ";
                    formData[data[0]] = data[1];
                }
            }
UnityWebRequest uploadRequest = UnityWebRequest.Post(serverBaseURL, formData);
currentUploadRequest = uploadRequest;
yield return uploadRequest.SendWebRequest();
...

如果此代码有效,我需要如何在服务器端接收它?

在 Yield Return 之后,您可以访问结果:

yield return www.SendWebRequest();

if (www.result != UnityWebRequest.Result.Success)
{
    // Error
}
else
{
    var result = UnityWebRequest.Result;
}

原来是服务器端错误,上面的代码应该可以。 服务器返回 http 错误 500,因为它正在请求不存在的数据(由在应用程序端而不是服务器端切换名称引起)。 服务器端代码使用 $_POST 来引用传入数据,示例如下所示。

if (isSet($_POST["App"])) {
    $dataArray = array();
    foreach($expectedFormInputCommon as $input) {
        if (isSet($_POST[$input])) {
            if (seralizeString($_POST[$input]) !== false) {
                $dataArray[$input] = seralizeString($_POST[$input]);
            } else {
                http_response_code(400);
                exit;
                }
        } else {
            http_response_code(400);
            $_POST[$input] = "empty";
            exit;
        }
    }
}