在 Unity 中向 Notion API 发出 POST 请求
Posted
技术标签:
【中文标题】在 Unity 中向 Notion API 发出 POST 请求【英文标题】:making POST request to Notion API in Unity 【发布时间】:2021-09-05 12:23:43 【问题描述】:我正在尝试。我有一个类,其中包含我根据 Notion 要求创建的所有属性。
[Serializable]
public class Parent
public string Database_id get; set;
public Parent(string database_id)
Database_id = database_id;
[Serializable]
public class Text
public string Content get; set;
public Text(string content)
Content = content;
//public List<RichText> rich_text get; set;
[Serializable]
public class Title
public Text Text get; set;
public Title(Text text)
Text = text;
[Serializable]
public class Name
public List<Title> title get; set;
public Name(List<Title> titles)
title = titles;
[Serializable]
public class Properties
public Name Name get; set;
public Properties(Name name)
Name = name;
[Serializable]
public class Root
public Parent Parent get; set;
public Properties Properties get; set;
public Root(Parent parent, Properties properties)
parent = parent;
properties = properties;
这就是我调用它的方式,我尝试将 json 字符串转换为字节,但我收到错误消息,它是错误的 json 格式,我现在的方式取得了一些进展,但说 parent 是未定义的。
var url = $"https://api.notion.com/v1/pages";
var parent = new Parent(databaseId);
var txt = new Text("test");
var title = new Title(txt);
var nam = new Name(new List<Title>() title );
var prop = new Properties(nam);
var root = new Root(parent, prop);
string json = JsonUtility.ToJson(root);
UnityWebRequest www = new UnityWebRequest(url, "POST");
byte[] bodyRaw = Encoding.UTF8.GetBytes(json);
www.uploadHandler = (UploadHandler)new UploadHandlerRaw(bodyRaw);
www.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();
www.SetRequestHeader("Authorization", userSecret);
www.SetRequestHeader("notion_version", Static.NOTION_VER);
www.SetRequestHeader("Content-Type", "application/json");
yield return www.SendWebRequest();
这就是我得到的错误,它不是很有帮助。
如有任何帮助,我们将不胜感激。
编辑: 我已删除 get;放;像 derHugo 建议的那样,但是我还需要用小写字母制作一些字段,例如。 Database_id 到 database_id。
【问题讨论】:
您是否尝试过查看root
对象的形状,也许它的构造方式有问题?直接操作 JSON 可能更容易。
因为它是统一的,我不能使用 Newtonsoft.Json,(否则这将是非常简单的任务)所以我尝试在字符串 string data = "\"parent\ ": \"database_id\": \"833d2ab361a74885a639749df796f84e\",\"properties\": \"Name\": \"title\": [\"text\": \"content\" : \"test1\"]";但它根本不起作用并说无效的json
【参考方案1】:
Unity 序列化器不支持属性!
请参阅 (Script Serialzation)。
只需删除所有get; set;
,这样您将拥有字段
[Serializable]
public class Parent
public string Database_id;
public Parent(string database_id)
Database_id = database_id;
[Serializable]
public class Text
public string Content;
public Text(string content)
Content = content;
[Serializable]
public class Title
public Text Text;
public Title(Text text)
Text = text;
[Serializable]
public class Name
public List<Title> title;
public Name(List<Title> titles)
title = titles;
[Serializable]
public class Properties
public Name Name;
public Properties(Name name)
Name = name;
[Serializable]
public class Root
public Parent Parent;
public Properties Properties;
public Root(Parent parent, Properties properties)
parent = parent;
properties = properties;
因为是unity所以不能用Newtonsoft.Json,(不然会很简单)
当然你可以!
它甚至是一个包:NewtonSoft JSON 你可以通过Package Manager 简单地安装
afaik 它甚至预装在最新的 Unity 版本中
【讨论】:
它有效,谢谢,完全忘记了这一点,但是我不得不对单词的大小写与预期的内容进行匹配,例如。父母而不是父母。 @MichaelKrezalek 当然是的 ;) 你没有发布你的 JSON,所以我们不得不假设情况已经如此;)以上是关于在 Unity 中向 Notion API 发出 POST 请求的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React Native 中向 API 发出 POST 请求?
当您不知道页数时,如何使用 Node.js 在 while 循环中向 API 发出多个分页 GET 请求?