2

我在使用 Attask 的项目中有点挣扎。我的目标是使用自定义表单数据更新项目的对齐值。我已经能够创建新的对齐值来更新,但我无法使用 put 方法执行它……我想要执行的请求是

PUT /attask/api/project/4c7...?updates= 
{
    alignmentValues: [ 
        { 
            scoreCardOptionID: "2222...54d0", 
            scoreCardQuestionID : "8897...54d1",... 
        },....
                     ] 
}

我的代码片段是

var request = new RestRequest("project/{id}", Method.PUT);
request.AddUrlSegment("id", pid);
request.RequestFormat = DataFormat.Json;
JObject _putData = new JObject();
_putData.Add("alignmentValues",newAnswers);

对于更新对象,我尝试了几种组合

request.AddParameter("updates",_putData,ParameterType.RequestBody); //no effect
request.AddBody(new {name = "updates", value = _putData}); //no effect

使用这种正文方法,我什至无法更新项目的名称。但是当我将参数作为查询字符串提供时,它会成功更新名称但由于 url 变得太大而导致对齐值失败

var request = new RestRequest("project/{id}?updates=" + _putData , Method.PUT);

如果 _putData 很小,则上述工作...如 name = "TEST"..但对于大 json 数组失败..

关于如何使用 addbody/addobject/addjsonobject/addparameter 更新值的任何建议...因为我需要在正文中发送请求,因为它的尺寸很大...

提前致谢。

4

1 回答 1

0

好吧,这不是一个答案,但我靠侥幸让它工作了。所以主要问题仍然存在。我不能使用带有 PUT 请求的 body 。即使我使用它也没有显示结果。所以我不得不去仅使用查询字符串...现在对于查询字符串中的大参数问题,我发送了整个alignmentvalues 对象,我只需要更新该对象中的两个字段。因此,在反复试验的方法中,我只传递了对象中的三个字段 - 答案 ID 和两个要更新的字段......它减少了查询字符串的大小,幸运的是它对我有用..

于 2015-05-15T19:11:01.340 回答