Microsoftテクノロジに基づいていないhttp restエンドポイントで動作するWCFクライアントを作成しようとしています。私のWCF-fooがかなり弱いので、私は私が間違ってやっているのか理解していない...私はこのようになりますサービス契約を作成しました...WCF他のサービスとの相互運用性、コンテンツタイプはtext/htmlです
私はこのようにしようとすると、実行[ServiceContract]
public interface IFilters
{
[OperationContract]
[WebGet(UriTemplate = "/api/filter.getavailable.xml?api_user={username}&api_key={password}")]
String GetAvailableFilters(String username, String password);
}
私はこのコードを実行すると、私が言う例外を取得...
public String Run(String username, String password)
{
var binding = new BasicHttpBinding();
binding.MessageEncoding = WSMessageEncoding.Text;
binding.Security.Mode = BasicHttpSecurityMode.Transport;
var endpointAddress = new EndpointAddress("https://sendgrid.com");
IFilters proxy = ChannelFactory<IFilters>.CreateChannel(binding, endpointAddress);
var result = "";
using (proxy as IDisposable)
{
result = proxy.GetAvailableFilters(username, password);
}
return result;
}
...
コンテンツタイプtext/htmlの。レスポンスメッセージのcharset = utf-8がバインディングのコンテンツタイプ(text/xml; charset = utf-8)と一致しません。カスタムエンコーダを使用する場合は、IsContentTypeSupportedメソッドが正しく実装されていることを確認してください。応答の最初の1024のバイトがあった。私は試してみて、(異なる資格情報で)、Webブラウザからこれをアクセスする場合...
は今、私は私が... 探していたXMLドキュメントを取得しますhttps://sendgrid.com/api/filter.getavailable.xml?api_user=foo&api_key=bar
私は間違って何をしていますか?
編集:
このだった最終作業溶液...あなたは拘束力はないRESTのSOAPバインディングでBasicHttpBindingを使用しているクライアント側で
public Filters Run(String username, String password)
{
var binding = new WebHttpBinding(WebHttpSecurityMode.Transport);
var endpointAddress = new EndpointAddress("https://sendgrid.com");
var factory = new ChannelFactory<IFilters>(binding, endpointAddress);
factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
var proxy = factory.CreateChannel();
using (proxy as IDisposable)
{
var results = proxy.GetAvailableFilters(username, password);
return results;
}
}