如何将两个字符串的字典发送到服务器?
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;
}
}
}
我是 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;
}
}
}