1

RestClient で削除アクションを作成しようとしていますが、Json オブジェクトをリクエスト本文に含めることができません。これは私のコードです:

        var client = new RestClient(WebService);
        var request = new RestRequest(string.Format("/api/v1/{0}/{1}", controller,    action), method);

        request.AddHeader("Accept", ContentTypeApplicationJson);
        request.RequestFormat = DataFormat.Json;            
        request.AddHeader("Content-Type", ContentTypeApplicationJson);
        request.AddCookie(".ASPXAUTH", AspxAuth);
        request.AddBody(jsonObjectRequest);

        var response = client.Execute(request);

        var jsonResponse = string.Empty;
        using (var stream = new MemoryStream(response.RawBytes))
        {
            stream.Position = 0;
            var sr = new StreamReader(stream);
            jsonResponse = sr.ReadToEnd();
        }

        var jObjectDeserialize = GetJObjectDeserialize(jsonResponse);

私の例では ContentTypeApplicationJson = application/json であり、jsonObject は以下を含むオブジェクトです。

{ "BasketItemReferenceGuid": "サンプル文字列 1", "BasketReferenceGuid": "サンプル文字列 2" }

これは Fiddler での私のリクエストです

削除 http://local.webapi.com/api/v1/BasketV3Products/ HTTP/1.1
受け入れる: アプリケーション/json
コンテンツ タイプ: アプリケーション/json
ユーザーエージェント: RestSharp 102.4.0.0
ホスト: local.webapi.com
Cookie: .ASPXAUTH=E6D216034E2CB1A22466A501392B1E2E46601E345B8A0E7743D76CF2270ACFC8ED3C9F1F2F477C4499267222A250E4490291381EE68FE719E094EF1ACDD619B4D792341988F80CB67E8B5037D8ACF9FBABB74DE1E75A530AB432D85722D647771C6C576F8E810257CE9E60117DCEEFBD949EAD9E64C84898BDC5D691F957CE6266CF5652C693B86ED1D55907AAC5DC68
コンテンツの長さ: 0
Accept-Encoding: gzip、デフレート

ありがとう

4

1 に答える 1

1

HTTP 仕様ではDELETE、 a に本文が含まれるべきではないと明示されていませんが、多くの Web サーバー (または Web プロキシ) はそれを無視するようです。

意味的に、 を使用するDELETE場合、uri は へのリソースを識別する必要がありDELETEます。これは、 を使用するようなものGETです。繰り返しになりGETますが、仕様では本文が禁止されていませんが、多くの Web サーバー (または Web プロキシ) がGETリクエストで本文を実際にサポートしているわけではありません。

詳細については、この SO 投稿を参照してください。

したがって、実装するより良い方法は、URI テンプレートDELETEに配置することです。BasketItemReferenceGuidBasketReferenceGuid

于 2013-03-27T12:02:10.897 に答える