【问题标题】:Get json data with UnityWebRequest with API使用 UnityWebRequest 和 API 获取 json 数据
【发布时间】:2021-01-13 19:40:24
【问题描述】:

我正在尝试从网站访问 JSON 数据,并且可以使用命令提示符轻松完成。我使用以下命令接收数据:

curl -H "Authorization: Token 1a2a3b4c5d" https://sampleweb.com/api/v1/sites/

但是我无法使用 Unity 访问它,我正在添加标头请求以及 API 密钥,但我收到授权错误。我在这里做错了什么?

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class GetAPI : MonoBehaviour
{
    private const string URL = "https://sampleweb.com/api/v1/sites/";
    private const string API_KEY = "1a2a3b4c5d";

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.A))
        {
            GenerateRequest();
        }
    }

    public void GenerateRequest()
    {
        StartCoroutine(ProcessRequest(URL));
    }

    private IEnumerator ProcessRequest(string uri)
    {
        using (UnityWebRequest request = UnityWebRequest.Get(uri))
        {
            request.SetRequestHeader("Authorization: Token", API_KEY);

            yield return request.SendWebRequest();

            if (request.isNetworkError)
            {
                Debug.Log("Error: " + request.error);
            }
            else
            {
                Debug.Log("Received: " + request.downloadHandler.text);
            }
        }
    }

}

【问题讨论】:

  • 您是否尝试过“Token 1a2a3b4c5d”作为您在 curl 示例中显示的标题数据?
  • 要说你没有发送令牌。所以它不会知道如何处理它
  • private const string API_KEY = "1a2a3b4c5d"; 更改为private const string API_KEY = "Token 1a2a3b4c5d";
  • @RetiredNinja 谢谢我现在明白了。我不得不省略 : 然后它起作用了。

标签: c# unity3d http-get


【解决方案1】:

:之前的部分是标题名称,第二部分是值。

您想将标头 Authorization 设置为值 Token + SOMEKEY 所以它应该是

request.SetRequestHeader("Authorization", $"Token {API_KEY}");

【讨论】:

  • 嗨,很遗憾,这不起作用。我收到未经授权的错误消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 2021-12-06
  • 2021-05-26
  • 1970-01-01
  • 2019-09-16
  • 2019-03-18
相关资源
最近更新 更多