RestSharp是否会覆盖Content-Type的手动设置?我正在创建一个RestSharp.RestRequest:RestRequestrequest=newRestRequest();request.Method=Method.POST;request.Resource="/rest-uri";request.AddHeader("Content-Type","application/someContentType");字符串xml=""+Environment.NewLine+""+Environment.NewLine+""+Environment.NewLine+"");request.AddParameter("text/xml",registerSinkRequest,ParameterType.RequestBody);(Content-Type手动设置为application/someContentType)在调试模式下,它也显示Content-Type=application/someContentType但执行RestRequest返回415MediaNotSupported-Error并且WireShark显示Media-Type设置为text/xml(如Set中的AddParameter-Method)。为什么RestSharp显示的Content-Type与WireShark不同?如何防止更改内容类型(如果是)?斯维克的评论是正确的。您可以通过在AddParameter()的第一个参数中设置内容类型来省略AddHeader()调用。虽然这是“正确”的答案,但我将解释为什么不是很明显有一种令人困惑的方法可以做到这一点。实现此目的的方法是使用AddBody()和RestRequest.RequestFormat。一个例子:varclient=newRestClient();//client.XmlSerializer=newXmlSerializer();//默认//client.XmlSerializer=newSuperXmlSerializer();//可以用ISerializer的任何实现覆盖varrequest=newRestRequest();request.RequestFormat=DataFormat.Xml;request.AddBody(objectToSerialize);objectToSerialize的序列化是基于注册的XmlSerializer。如果使用RequestFormat=DataFormat.Json,则使用RestClient.JsonSerializer。ISerializer实现(可用于覆盖默认序列化)声明它们自己的Content-Types,这些Content-Types通过您正在使用的jankyAddParameter()重载传递。AddParameter(contentType,content,ParameterType.RequestBody)从未打算直接调用。它是作为从AddBody()传递数据的变通方法添加的,但后来其他东西变得依赖于它,所以它被卡住了。事后看来,这是一个糟糕的决定,但在1xx版本中更改它为时已晚。如果我构建另一个版本,它对我来说会更明显。设置文本内容时,可以更改Content-Type。Body的NAME参数设置Content-Type。以上是C#学习教程:DoesRestSharpoverridemanualsettingofContent-Type?分享的所有内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注——oRequest.Parameters.Add(newParameter(){name="application/json;charset=UTF-8",类型=ParameterType.RequestBody,值=sBody});本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
