2

Attask を使用したプロジェクトで少し苦労しています。私の目的は、カスタムフォームデータを使用してプロジェクトのalignmentValuesを更新することです。更新する新しいアライメント値を作成できましたが、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

まあ、これは答えではありませんが、まぐれで動作するようにしました..SO主な問題はまだ残っています..PUTリクエストでボディを使用できません..使用しても結果が表示されません..だから私は行かなければなりませんでしたクエリ文字列のみを使用...クエリ文字列の大きなパラメーターに関する問題については、そのオブジェクト内の2つのフィールドのみを更新する必要があったalignmentvaluesオブジェクト全体を送信していました。したがって、試行錯誤のアプローチで、オブジェクト内の3つのフィールドのみを渡しました-回答IDと更新する2つのフィールド...そして、クエリ文字列のサイズを減らし、幸いなことに私にとってはうまくいきました..

于 2015-05-15T19:11:01.340 に答える