C# 使用RestSharp的C Post XML文件
我已经编写了一个将消息发布到uri的方法C# 使用RestSharp的C Post XML文件,c#,http-post,restsharp,rest-client,C#,Http Post,Restsharp,Rest Client,我已经编写了一个将消息发布到uri的方法 public string RestClientPost(string uri, string message = null) { var client = new RestClient(uri); var request = new RestRequest(Method.POST); request.AddHeader("Accept", "text/xml"); if (!str
public string RestClientPost(string uri, string message = null)
{
var client = new RestClient(uri);
var request = new RestRequest(Method.POST);
request.AddHeader("Accept", "text/xml");
if (!string.IsNullOrEmpty(message))
request.AddParameter(message, ParameterType.RequestBody);
var result = "";
var response = client.Execute(request);
if (response.StatusCode == HttpStatusCode.OK)
{
result = response.Content;
Console.WriteLine(result);
}
else
{
result = response.StatusCode.ToString();
}
return result;
}
下面的代码是用上面的方法来发布的
public void test123()
{
string uri = "myuri"; //private uri, cannot expose.
var file= System.IO.File.ReadAllText(Path.Combine(Settings.EnvValPath, "RestClientXML", "test.XML"));
var content = new RestClientServices().RestClientPost(uri, file);
}
但是,它返回不支持的媒体类型
XML的内容是
<customer>
<customerName>test</customerName >
<customerStatus>OK</customerStatus >
</customer>
使用Google Chrome的高级Rest客户端插件,我可以发布并返回我想要的字符串。有什么不对劲吗??我在高级Rest客户端中将内容类型设置为text/xml
返回消息是客户的id。e、 g:2132
之所以发生这种情况,是因为头Accept要指定返回对象的类型。在本例中,是可变内容的值,而不是要发送的内容类型。指定要发送的内容类型:content-type:application/xml 如果POST请求的返回类型是媒体文件,则可以使用“image/png”或“image/jpeg”。您可以使用多个接受头值,如:application/xml、application/xhtml+xml和image/png。 例如,您可以使用调试HTTPs通信—这对于web开发人员来说是一个很好的工具。im使用
如果可以使用此工具调用任何xml web服务,则可以单击并选择restsharp并将其复制粘贴到代码中返回值为字符串。例如:2312。你能举个例子吗?我真的不明白你的答案。@Joseph想说的是,'Accept'头表示你期望看到的响应类型。因此,在这种特定情况下,您不需要它,您应该指定请求格式:request.RequestFormat=DataFormat.XmlI将我的原始计划从RestSharp更改为Rest客户机C,我现在可以得到我想要的。如果你们需要答案,就给我留言。