首页 > 解决方案 > 无法正常退出功能

问题描述

我有一个 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 获得的值时,即输出变量,它说它为空。我试过把它放在函数中,放在公共变量中。但现在可用。

有任何想法吗?

标签: c#

解决方案


您已经定义了一个类型的输出,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
}

推荐阅读