2

我已经编写了一种将消息发布到 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 (!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);

    }

但是,它返回“不支持的媒体类型”。

我的 test.XML 的内容是

<customer> 
    <customerName>test</customerName > 
    <customerStatus>OK</customerStatus > 
</customer>

并且使用 Google Chrome 的 Advanced Rest Client Plugin,我可以发布它并返回我想要的字符串。有什么不对??我在 Advanced Rest Client 中将“content-type”设置为“text/xml”。

  • 返回消息是客户的 id。例如:2132
4

2 回答 2

1

我使用邮递员

postman 获取 c# 代码工具

如果您可以使用此工具调用任何 xml Web 服务,那么您可以单击代码并选择 restsharp 并将其复制粘贴到您的代码中

于 2019-01-15T14:08:11.507 回答
0

发生这种情况是因为标题“Accept”是指定返回对象的类型。在这种情况下,变量content的值,而不是要发送的内容的类型。指定要发送的内容类型:“Content-Type: application/xml”。

如果 POST 请求的返回类型是媒体文件,则可以使用“image/png”或“image/jpeg”。您可以使用多个接受标头值,例如:“ application/xml、application/xhtml+xml 和 image/png ”。例如,您可以使用Fiddler来调试 HTTP(s) 流量——它是 Web 开发人员的好工具。

于 2013-07-17T04:01:22.707 回答