C# RestClient删除操作Json错误
我试图使用RestClient执行删除操作,但无法在请求体中包含Json对象。这是我的代码:C# RestClient删除操作Json错误,c#,asp.net,C#,Asp.net,我试图使用RestClient执行删除操作,但无法在请求体中包含Json对象。这是我的代码: var client = new RestClient(WebService); var request = new RestRequest(string.Format("/api/v1/{0}/{1}", controller, action), method); request.AddHeader("Accept", ContentTypeAp
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”
}
这是我在《小提琴手》中的要求
DELETE http://local.webapi.com/api/v1/BasketV3Products/ HTTP/1.1
Accept: application/json
Content-Type: application/json
User-Agent: RestSharp 102.4.0.0
Host: local.webapi.com
Cookie: .ASPXAUTH=E6D216034E2CB1A22466A501392B1E2E46601E345B8A0E7743D76CF2270ACFC8ED3C9F1F2F477C4499267222A250E4490291381EE68FE719E094EF1ACDD619B4D792341988F80CB67E8B5037D8ACF9FBABB74DE1E75A530AB432D85722D647771C6C576F8E810257CE9E60117DCEEFBD949EAD9E64C84898BDC5D691F957CE6266CF5652C693B86ED1D55907AAC5DC68
Content-Length: 0
Accept-Encoding: gzip, deflate
删除http://local.webapi.com/api/v1/BasketV3Products/ HTTP/1.1
接受:application/json
内容类型:application/json
用户代理:RestSharp 102.4.0.0
主持人:local.webapi.com
Cookie:.ASPXAUTH=E6D216034E2CB1A22466A501392B1E2E46601E345B8A0E7743D76CF2270ACFC8ED3C9F1F2F477C4499267222A250E4490291381EEE68FE719E094EF1ACD619B4D792348F80CB67E8B5037D8ACF9FBab74DE75A530AB432D85722D64777C676C576E810257CE9E60117DCEEFBD949EAD9E64C4898D697CE625656865CF957AD957C5907ED68
内容长度:0
接受编码:gzip,deflate
谢谢看起来,即使HTTP规范没有明确规定删除不应该有正文,许多web服务器(或web代理)也会忽略它 从语义上讲,当使用
DELETE
时,uri应该标识要DELETE
的资源。这有点像使用GET
。同样,对于GET
,规范并不禁止主体,但实际上并没有多少web服务器(或web代理)支持GET
请求的主体
有关详细信息,请参阅
因此,实现
DELETE
的更好方法是将basketitemferenceguid
和BasketReferenceGuid
放在uri模板中。看起来,即使HTTP规范没有明确说明DELETE
不应该有主体,许多web服务器(或web代理)也会忽略它
从语义上讲,当使用DELETE
时,uri应该标识要DELETE
的资源。这有点像使用GET
。同样,对于GET
,规范并不禁止主体,但实际上并没有多少web服务器(或web代理)支持GET
请求的主体
有关详细信息,请参阅
因此,实现
DELETE
的更好方法是将basketitemferenceguid
和BasketReferenceGuid
放在uri模板中。您好,Davin。谢谢你的回答。最后,我用HttpWebRequest解决了请求中的问题。通过这种方式,您可以在DELETE请求体中包含您想要的任何内容。谢谢,大卫。谢谢你的回答。最后,我用HttpWebRequest解决了请求中的问题。通过这种方式,您可以在DELETE请求体中包含您想要的任何内容。谢谢