c# - 无法正常退出功能
问题描述
我有一个 C# 统一函数,我试图从网络服务器请求一些 json,但由于某种原因它没有退出我想要的函数:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Proyecto26;
using UnityEditor;
using UnityEngine.Networking;
using System.Text;
using TMPro;
using SimpleJSON;
public class APIRequest
{
// string basicRequestPage = "****";
string basicAPI_Key = "****";
// Start is called before the first frame update
string outputs;
public string basicRequest(int requestTyp)
{
auth test1 = new auth();
test1.key = basicAPI_Key;
switch (requestTyp)
{
case 0:
test1.request = "deckList";
break;
case 1:
test1.request = "card";
break;
}
string output = JsonConvert.SerializeObject(test1);
byte[] outputToServer = Encoding.ASCII.GetBytes(output); ;
//Debug.Log(output);
RestClient.Request(new RequestHelper
{
Uri = basicRequestPage,
Method = "POST",
Timeout = 10,
//EnableDebug = true,
ParseResponseBody = false, //Don't encode and parse downloaded data as JSONe
BodyRaw = outputToServer
}).Then(response =>
{
// EditorUtility.DisplayDialog("Status", response.Text, "Ok");
var rest = response.Text;
//Debug.Log(rest);
outputs = rest.ToString();
//EditorUtility.DisplayDialog("Status", outputs, "Ok");
return outputs;
}).Catch(err =>
{
var error = err as RequestException;
EditorUtility.DisplayDialog("Error Response", error.Response + "", "Ok");
}
);
}
}
它作为一种方法工作得很好,但一直抱怨我没有从函数中得到有效的返回。当我尝试返回从 API 获得的值时,即输出变量,它说它为空。我试过把它放在函数中,放在公共变量中。但现在可用。
有任何想法吗?
解决方案
您已经定义了一个类型的输出,string
但是您不会在所有出口处都返回一个字符串。之后,catch
您必须在方法末尾或在catch
. 我添加的最后一行 return "";
应该可以解决问题。
public string basicRequest(int requestTyp)
{
auth test1 = new auth();
test1.key = basicAPI_Key;
switch (requestTyp)
{
case 0:
test1.request = "deckList";
break;
case 1:
test1.request = "card";
break;
}
string output = JsonConvert.SerializeObject(test1);
byte[] outputToServer = Encoding.ASCII.GetBytes(output);
//Debug.Log(output);
RestClient.Request(new RequestHelper
{
Uri = basicRequestPage,
Method = "POST",
Timeout = 10,
//EnableDebug = true,
ParseResponseBody = false, //Don't encode and parse downloaded data as JSONe
BodyRaw = outputToServer
}).Then(response =>
{
// EditorUtility.DisplayDialog("Status", response.Text, "Ok");
var rest = response.Text;
//Debug.Log(rest);
outputs = rest.ToString();
//EditorUtility.DisplayDialog("Status", outputs, "Ok");
return outputs;
}).Catch(err =>
{
var error = err as RequestException;
EditorUtility.DisplayDialog("Error Response", error.Response + "", "Ok");
}
);
return ""; //<----- this here
}
推荐阅读
- python - 将 dict 理解转换为正常形式
- java - 将数据插入数据库时出现“org.springframework.beans.ConversionNotSupportedException”错误
- python - 表单字段输入的Python Django长度为1,即使它为空
- c# - Blazor:无法获取以对象为键的字典
- android - 如何获得具有相同价值的孩子的数量?
- html - 使用 golang 抓取网页内容
- r - 将数据分为训练和测试
- r - 在给定桶大小的情况下按体积填充容器
- openssl - Openssl 读取和常规写入
- c# - 视觉工作室和 SQL 服务器。无法在 VIsual Studio 中看到数据库