2017-02-01 7 views
1

xmlコンテンツをHttpClient'sPostAsync操作でコンテンツと互換性を持たせるにはどうすればいいですか。の場合はheadersをどこで指定しますか?HttpClientを使用してxmlコンテンツを呼び出す

エラー - >HttpContent

public async Task GetCustomersAsync(string firstname, string lastname) 
{ 
     using (var client = new HttpClient()) 
     { 
      var content = "<soapenv:Envelope xmlns:xsi..."; 

      var response = await client.PostAsync("https://domain.com/scripts/WebObj.exe/Client.woa/2/ws/ABC", content); 

      var responseString = await response.Content.ReadAsStringAsync(); 
     } 
    } 

答えて

1

に文字列を変換できません私の推測では、あなたが何をしたいです、次のとおりです。

public async Task<string> GetCustomersAsync(string firstname, string lastname) 
{ 
    using (var client = new HttpClient()) 
    { 
     var content = new StringContent("<soapenv:Envelope xmlns:xsi...", Encoding.UTF8, "application/xml");; 

     var response = await client.PostAsync("https://example.com/scripts/WebObj.exe/Client.woa/2/ws/ABC", content); 

     return await response.Content.ReadAsStringAsync(); 
    } 
} 

OR

using (var request = new HttpRequestMessage { RequesteUri = new Uri("POST_URL"), Method = HttpMethod.Post }) 
{ 
    var content = new StringContent("<soapenv:Envelope xmlns:xsi..."); 
    request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/xml"); 
} 

することができますrefer here詳細へ他のコンテンツタイプを作成して渡すことができます。

+0

ありがとう、どのようにヘッダを指定しましたか?この場合はcontent-typeです。 – user2727195

+0

@ user2727195私は自分の答えを更新しました。そのヘッダーはcontenttypeのためのもので、具体的には、最初の例では、コンストラクターの最後のパラメーターがContent-Typeヘッダーとして設定されています。あなたが別のヘッダーを探しているのであれば、それは要求オブジェクト自体のrequest.Headers.Add( "HEADER_KEY"、 "HEADER_VALUE")で行われます。 – peinearydevelopment

+0

HTTPClientはコンテンツから読み込み、エンコーディングします。それに応じてヘッダーは正しくなりますか?\ – user2727195

関連する問題