2016-08-04 5 views
0

Я использую RestSharp для POST следующее:XML POST с RestSharp

POST API/storage 
Content-Type: application/xml 
<StorageDocument xmlns="http://xml.somename.com/schema/somename"> 
    <type>LOCAL</type> 
    <method> 
    <uri>file:///path/to/files/</uri> 
    <read>true</read> 
    <write>true</write> 
    <browse>true</browse> 
    <type>NONE</type> 
</method> 
<autoDetect>true</autoDetect> 
</StorageDocument> 

Мой код:

private void button2_Click(object sender, EventArgs e) 
    { 
     var client = new RestClient(); 

     client.BaseUrl = new Uri(baseUrlString); 
     client.Authenticator = new HttpBasicAuthenticator("admin", "admin"); 

     var request = new RestRequest("API/storage", Method.POST); 

     request.AddParameter ("Content-Type", "application/xml"); 
     request.RequestFormat = DataFormat.Xml; 

     string xml = 
      "<StorageDocument xmlns=\"http://xml.somename.com/schema/somename\">" + Environment.NewLine + 
      "<type>LOCAL</type>" + Environment.NewLine + 
      "<method>" + Environment.NewLine + 
       "<uri>file:///path/to/files/</uri>" + Environment.NewLine + 
       "<read>true</read>" + Environment.NewLine + 
       "<write>true</write>" + Environment.NewLine + 
       "<browse>true</browse>" + Environment.NewLine + 
       "<type>NONE</type>" + Environment.NewLine + 
      "</method>" + Environment.NewLine + 
      "<autoDetect>true</autoDetect>" + Environment.NewLine + 
      "</StorageDocument>"; 


     request.AddBody(xml); 

     IRestResponse response = client.Execute(request); 

     MessageBox.Show(Convert.ToString(response.Content)); 
    } 

Когда я отправляю я получаю "HTTP 415 неподдерживаемых Тип носителя". Я много пробовал, но не могу понять, в чем проблема. Я считаю, что это с xml или телом запроса, но не может найти решение.

Любые идеи? Заранее спасибо

ответ

1

Это может быть полезным для кого-то в моей ситуации, этот код работал

private void button2_Click(object sender, EventArgs e) 
    { 
     var client = new RestClient(); 

     client.BaseUrl = new Uri(baseUrlString); 
     client.Authenticator = new HttpBasicAuthenticator("admin", "admin"); 


     var request = new RestRequest("API/storage", Method.POST); 


     string rawXml = "<StorageDocument xmlns=\"http://xml.somename.com/schema/somename\"><type>LOCAL</type><method><uri>file://home/Testuser/storage/</uri><read>true</read><write>true</write><browse>true</browse><type>NONE</type></method><autoDetect>true</autoDetect></StorageDocument>"; 

     request.AddParameter("application/xml", rawXml, ParameterType.RequestBody); 

     IRestResponse response = client.Execute(request); 

     MessageBox.Show(Convert.ToString(response.Content)); 
    } 

Ключевым моментом является использование AddParameter вместо AddBody, упомянутый здесь RestSharp PUT XML, RestSharp is sending it as GET? Ричард другу