C# 发送REST请求时,如何生成NextCloud键值对?

C# 发送REST请求时,如何生成NextCloud键值对?,c#,rest,nextcloud,C#,Rest,Nextcloud,我正在尝试为Nextcloud编写一个工具 它从另一个数据库读取一些信息,然后在Nextcloud中创建一个新用户,创建一个共享文件夹,并将一些文件复制到新文件夹中。 为此,我正在使用Nextcloud的API 该工具是用C#编写的,并使用HttpWebRequest向服务器发送数据。 大多数工作正常,但在创建新用户时,我无法设置用户的电子邮件地址。因此,我尝试了API中的另一种方法,更新现有用户 要更新用户,我必须使用PUT方法将键值对中的数据发送到服务器 在Nextcloud文档中有一个这样

我正在尝试为Nextcloud编写一个工具

它从另一个数据库读取一些信息,然后在Nextcloud中创建一个新用户,创建一个共享文件夹,并将一些文件复制到新文件夹中。 为此,我正在使用Nextcloud的API

该工具是用C#编写的,并使用HttpWebRequest向服务器发送数据。 大多数工作正常,但在创建新用户时,我无法设置用户的电子邮件地址。因此,我尝试了API中的另一种方法,更新现有用户

要更新用户,我必须使用PUT方法将键值对中的数据发送到服务器

在Nextcloud文档中有一个这样做的示例

PUT http://admin:secret@example.com/ocs/v1.php/cloud/users/Frank -d key="email" -d value="franksnewemail@example.org"
但是我不知道如何创建键值对以将其发送到服务器

有人有主意吗

提前谢谢

r3d007

编辑: 如果我给您相应的cURL命令,可能会更容易:

curl -u USER:PW -d key="email" -d value="user@mail.us" -X PUT 'https://nc.example.com/ocs/v1.php/cloud/users/USERNAME' -H "OCS-APIRequest: true"

再次。。。提前谢谢

您需要创建具有键值属性的对象

public class foo {

    public string key { get; set; }
    public string mail { get; set; }

}
并将其序列化为您的数据

我已经弄明白了

我通过NuGet安装了RestSharp

这对我来说很有用:

        RestClient rc = new RestClient($"{URL}{UserAPI}/{user}");
        rc.Authenticator = new HttpBasicAuthenticator(Username, Password);
        RestRequest rr = new RestRequest(Method.PUT);
        rr.AddHeader("OCS-APIRequest", "true");
        rr.AddParameter("key", "email");
        rr.AddParameter("value", email);
        var response = rc.Execute(rr);
谢谢你的帮助

        RestClient rc = new RestClient($"{URL}{UserAPI}/{user}");
        rc.Authenticator = new HttpBasicAuthenticator(Username, Password);
        RestRequest rr = new RestRequest(Method.PUT);
        rr.AddHeader("OCS-APIRequest", "true");
        rr.AddParameter("key", "email");
        rr.AddParameter("value", email);
        var response = rc.Execute(rr);