C#でWebサービスリクエストを呼び出す際に問題があります。C#でWebサービスリクエストを事前認証する
Soap UIで[Preemptively Authenticate]オプション(ファイル、環境設定、HTTP設定)を有効にして、サービスとリクエストが正しく動作しています。この設定を有効にしないと、サービスは 'Java.Lang.NullPointerException'を返します。
私が抱えている問題は、C#コンテキストでこの設定を有効にする方法がわからないことです。
私は特定のサービスへのいわゆるサービスリファレンスを保持する.NET 3.5クラスライブラリを持っています。これは単純なコードスニペットです。
try
{
CatalogService.CatalogChangeClient service = new CatalogService.CatalogChangeClient();
service.ClientCredentials.UserName.UserName = "fancydress";
service.ClientCredentials.UserName.Password = "47fda9cb4b51a9e";
service.ClientCredentials.SupportInteractive = true;
ProductUpdate[] products = new ProductUpdate[1];
products[0] = new ProductUpdate();
products[0].ProductCode = "00001";
products[0].ProductDescription = "TestProduct";
string result = service.UpdateProducts(products);
}
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}
最初の返信後に更新します。
CatalogService.CatalogChangeClientクラスは
System.ServiceModel.ClientBase<TChannel>
エンド更新
WCF抽象クラスを実装しているようだ誰も私は、このプロパティを設定するのに役立ちてもらえますか?
はESPより多くのコードを表示してください。 公共部分クラスのCatalogChangeClient:System.ServiceModel.ClientBase、Fancydressインタフェースは 'CatalogService.CatalogChangeClient'はそれはWCFからSystem.ServiceModel.ClientBaseクラスを実装しているようだ –
Yahia
実装しています。 ResourceAccess.MCSF.CatalogService.CatalogChange –
私はこれを収集します.NET実装の問題です。リクエストを送信し、サービスから401が取得されたときにのみ、資格証明付きで再送信されます...あなたのJava WebServiceは送信されないようです401 - あなたは本当に事実であることを最初に確認する必要がありますが(WireShark)...それは事実です:これを回避するためには、あなたが別のクライアント(プロキシ)を使用しなければならないと思われます。資格はいつも... – Yahia