我正在尝试向其发布数据的API,以便可以在网站上注册用户。我正在执行POST,其中一个参数需要一个对象数组。
在文档中给出了示例-
"registration_answers_attributes" : [
{
"registration_question_id" : "2",
"answer" : "Because I'm Batman"
},
{
"registration_question_id" : "16",
"answer" : "Alfred"
}
]
我正在运行的代码如下:
var reqparm = new System.Collections.Specialized.NameValueCollection();
var customFields = _DataFields();
List<RegistrationKeyPair> keys = new List<RegistrationKeyPair>();
keys.Add(new RegistrationKeyPair(customFields[1]["id"], model.SelectedUserGroup));
reqparm.Add("registration_answers_attributes",
string.Join(";", keys.Select(x => "[{" + "\"registration_question_id\":" + x.registration_question_id + ", \"answer\" : \"" + x.answer + "\"}]").ToArray()));
byte[] responsebytes = client.UploadValues(this._url + "/api/v2/users", "POST", reqparm);
string responsebody = Encoding.UTF8.GetString(responsebytes);
registration_answers_attribute
数组
哈希数组,其中包含一个registration_question_id和一个答案。部分或全部注册问题可能需要答案。请参阅registration_questions端点文档
我添加到reqparm中的字符串似乎与文档所要求的相匹配,但是每次运行程序时都会失败。
答案 0 :(得分:0)
将问题分解为更小的步骤。
对于第一步,您可以使用Fiddler或在应用程序中编写测试方法。我将从他们网站上的示例开始,或者使用与下面的示例类似的有效JSON。有很多不同的方法使此方法不起作用。确保您查看API文档并获得正确的content-type / etc。
{
"registration_answers_attributes": [{
"registration_question_id": "2",
"answer": "Because I'm Batman"
},
{
"registration_question_id": "16",
"answer": "Alfred"
}
]
}
对于步骤2,我强烈建议创建POCO类,并使用JSON.Net之类的库为您序列化。这样可以避免调试时的很多痛点。我创建了一些示例类。
public class MyAnswers
{
public List<RegistrationAnswers> registration_answers_attributes { get; set; }
}
public class RegistrationAnswers
{
public string registration_question_id { get; set; }
public string answer { get; set; }
}
最后一部分,您实际上只需要弄清楚他们希望您如何使用他们的API。如果您要提交序列化的JSON,则可能需要使用UploadString,并且可能要使用Content-Type: application/json
。没有访问他们的API的权限,这里的任何人都很难说。