填充数组(列表)以将调用从 C# 发送到 php

因此,我将参数从 unity 传递到 PHP API,一切都很好,但现在我想将其作为数组传递,因此在这个方法中,我声明了我的列表并尝试使用正确的参数发送请求


tokenID、address和value(最后 3 个)需要从声明的列表中填充,但我不知道如何做到这一点。


任何帮助表示赞赏


public List<string> recipientAdvancedAddress = new List<string>();

public List<string> tokenAdvancedSend = new List<string>();

public List<string> valueAdvancedSend = new List<string>();


public void Send()

{

    StartCoroutine(SendAsync(userSession, senderAdvancedID, tokenAdvancedSend, recipientAdvancedAddress, valueAdvancedSend));

}


IEnumerator SendAsync(string session, int senderID, List<string> tokenID, List<string> addresses, List<string> value)

{

    CryptoFilter cryptoFilter = new CryptoFilter();

    cryptoFilter.AddParam("action", "advancedSendFT");

    cryptoFilter.AddParam("session", session);

    cryptoFilter.AddParam("senderID", $"{senderID}");

    cryptoFilter.AddParam("tokenID", tokenID);

    cryptoFilter.AddParam("addresses", addresses);

    cryptoFilter.AddParam("value", value);


    using (UnityWebRequest webRequest = UnityWebRequest.Post($"http://{SERVER_ADDR}/tsd/api.php", cryptoFilter.GetRequestPayload()))

        {

            yield return webRequest.SendWebRequest();

            var result = webRequest.downloadHandler.text;

            // Decrypt the response from the server.

            result = cryptoFilter.GetResponsePayload(result);

            sendItem data = JsonConvert.DeserializeObject<sendItem>(result);

            if (!data.error)

                txID = data.id;

        }


}

这是错误: https: //i.ibb.co/frNR5tF/error.png


这是 CryptoFilter.cs 中的方法

class CryptoFilter

{


    // Encrypt & Decrypt Engine

    AES256 aes = new AES256();


    // Request parameters

    Dictionary<string, string> request = new Dictionary<string, string>();


    /*

     *

     * Add a parameter.

     * 

     */

    public void AddParam(string name, string value)

    {

        if (value != "")

            request.Add(name, value);

    }

顺便说一句,我不能在主脚本中执行 foreach 吗?

所以如果我有 1 个 tokenID 就可以了,但是当我需要将 2 个 tokenID 发送到 2 个不同的地址时,这就是我想要实现的目标


牛魔王的故事
浏览 99回答 1
1回答

翻翻过去那场雪

AddParam 方法的重载怎么样:AddParam(List<string>)或者通用版本:AddParam(List<T>)甚至:AddParam(Collection<T>)我想我不太明白你在问什么,但在这个方法中,你也许可以循环遍历这些项目并用它们做你已经在做的事情。编辑:看起来你最终需要一个 json 。为此,您可以使用 Unity 的内置序列化。首先创建一个表示 DTO(数据传输对象)的类,然后将其序列化为 json 字符串。[Serializable]public class CryptoFilter{&nbsp; &nbsp; public string action;&nbsp; &nbsp; // other string fields&nbsp; &nbsp; public List<string> addresses;&nbsp; &nbsp; // other string list fields&nbsp; &nbsp; public CryptoFilter(string action, List<string> addresses)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; this.action = action;&nbsp; &nbsp; &nbsp; &nbsp; this.addresses = addresses;&nbsp; &nbsp; }}然后使用:CryptoFilter cryptoFilter = new CryptoFilter(...);string json = JsonUtility.ToJson(cryptoFilter);编辑:作为请求的字符串到字符串字典不适用于列表。使用可序列化的类,就像我为此发布的那样。只需将其称为 Request 等,而不是 CryptoFilter。然后创建该对象并将其设置为 CryptoFilter 一次,而不是多次调用 AddParam。
打开App,查看更多内容
随时随地看视频慕课网APP