使用API​​通过UnityWebRequest获取JSON数据

问题描述

我正在尝试从网站访问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);
            }
        }
    }

}

解决方法

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

您想将标头Authorization设置为值Token + SOMEKEY,因此它应该是

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