【问题标题】:POST to ALM via RestSharp: Unsupported Media Type通过 RestSharp POST 到 ALM:不支持的媒体类型
【发布时间】:2014-08-31 20:56:46
【问题描述】:

我正在尝试使用 RESTSHARP 在 HP-ALM 上发布实体。 到目前为止,我成功地进行了身份验证并得到了一些 GET 响应。 但是,不知何故,对于我发送的每个 POST 请求,我都会收到以下响应:

qccore.general-错误 不支持的媒体类型

这是我进行的众多试验之一(用于发布缺陷)。关于这里出了什么问题的任何想法?

    private RestRequest createPOSTRequest()
    {
        RestRequest Request = m_client.CreateRequest(m_client.BaseUrl + 
        "rest/domains/{domain}/projects/{project}/{entity-type}", Method.POST);
        Request.AddUrlSegment("domain", m_client.domain);
        Request.AddUrlSegment("project", m_client.project);
        Request.AddUrlSegment("entity-type", "defects");

        Request.AddHeader("Content-Type", "application/xml");
        Request.AddHeader("Accept", "application/xml");

        Request.RequestFormat = DataFormat.Xml;

        m_xmlBody = = @"<?xml version='1.0' encoding='UTF-8'? encoding='UTF-8' standalone='yes'?>"+
                                "<Entity Type='defect'>"+
                                "<Fields>" +
                                "<Field Name='detected-by'>"+
                                "<Value>sa</Value>"+
                                "</Field>"+
                                "<Field Name='creation-time'>"+
                                "<Value>2010-03-02</Value>"+ 
                                "</Field>"+
                                "<Field Name='severity'>"+
                                "<Value>2-Medium</Value>"+ 
                                "</Field>"+
                                "<Field Name='name'>"+
                                "<Value>Defect Entity.</Value>"+ 
                                "</Field>"+
                                "</Fields>"+
                                "</Entity>";

        return Request;
    }

谢谢。

【问题讨论】:

    标签: c# xml post restsharp alm


    【解决方案1】:

    Content-Type 不能与AddHeader 一起正常工作。

    解决方案here

    实现此目的的预期方法是将 AddBody() 与 RestRequest.RequestFormat 一起使用。一个例子:

    var client = new RestClient();
    // client.XmlSerializer = new XmlSerializer(); // default
    // client.XmlSerializer = new SuperXmlSerializer(); // can override with any implementaiton of ISerializer
    
    var request = new RestRequest();
    request.RequestFormat = DataFormat.Xml;
    request.AddBody(objectToSerialize);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-20
      • 2014-02-13
      • 1970-01-01
      • 2020-09-03
      • 2017-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多