3


0

Webサービスが有効になっているWebサイトにログインした場合にのみヒットできるWebサービスがあります。 リモートでサービスをテストする必要があります。 だから私は別のブラウザでサイトにログインしている偽のセッションを作成するためのコードを書いた。 その後、HTTP Web要求を作成し、そのログインユーザーのASP.NETセッションIDを含むCookieを設定しようとしています。 しかし、WebサービスはWeb要求がログインユーザーまたはセッションであることを検出しません。 これが有効なセッションであると納得させるためには、Webサービスに何を与える必要がありますか?

// used on each read operation

byte [] buf = new byte [8192];

CookieContainer myContainer = new CookieContainer();

文字列sessionID = SessionID。

myContainer.Add(新しいCookie( "ASP.NET_SessionId"、sessionID、 "/"、WebsiteUrl));

// prepare the web page we will be asking for
HttpWebRequest要求=(HttpWebRequest)WebRequest.Create(CreateWebserviceUrl( "doneScreenScore")); request.ContentType = "text / xml; charset = utf-8"; request.Method = "POST"; request.Accept = "text / xml"; request.Headers.Add( "SOAPAction"、 "http://detectent.net/doneScreenScore");

request.CookieContainer = myContainer;

ストリームs = request.GetRequestStream();

string soaprequest = ""; soaprequest = ""; soaprequest = ""; soaprequest = ""; soaprequest = ""; soaprequest = "string"; soaprequest = "string"; soaprequest = "string"; soaprequest = "string"; soaprequest = ""; soaprequest = ""; soaprequest = "";

s.Write(System.Text.Encoding.ASCII.GetBytes(soaprequest)、0、soaprequest.Length);

s.Close();

// execute the request
HttpWebResponse response =(HttpWebResponse)request.GetResponse();

// we will read data via the response stream
ストリームresStream = response.GetResponseStream(); string responseFromWebServiceCall = ReadResponseStream(resStream);

3 Answer


1


実際に自分自身のことをいじっていないと、なぜそれがうまくいかないのか正確にはわかりません。 しかし、私はテストを目的とした典型的なユーザーになりすましてアプリケーションを書く作業を少ししましたが、慣れ親しんだツールはWireSharkと呼ばれます。 (以前はEtherealと呼ばれていました)

WireSharkはパケットスニファです。 通常Webサイトを閲覧しながらそれを実行すると、ブラウザとWebサーバーとの間でやり取りされるすべてのデータを見ることができます。 このWebサービスにリクエストを送信するために必要な情報が見つかったら、同じように動作する適切なWebRequestを構築するのに問題はありません。

WireSharkは 公式サイトからダウンロードできます。


1


私はあなたが信任状で何かをすることができると思います…​ 私はWebサービスのためにこれをやっています…​

rpt.Credentials = new System.Net.NetworkCredential(ユーザー名、パスワード、ドメイン);


0


WebサイトがWindows認証を使用している場合、NetworkCredentialsは機能します。

私はこのようなことをするときブラウザを偽装するさまざまな成功を収めました。 通常私は最初に彼らのログインページに有効な要求をしなければなりません。 応答にはSessionIDを含むCookieが含まれます。 それ以降のすべてのリクエストに同じCookieCollectionを再利用する限り(つまり、 リクエストごとに再利用される1つのグローバルCookieCollectionは正常に動作します。

奇妙なことに、私はまだウェブサイトが私の新しくログインしたセッションを認識しないことに気づきます。 その場合は、手動でFireFoxにログインし、WebDeveloperツールバーを使ってクッキーを表示します。 私はクッキーの名前/値をつかみ、それらをアプリの設定に入れます。これはプログラムがクッキーコレクションを生成するために使用されます。

あなたも有効なユーザーを偽装してください。 私はそれを理由として私にサイトを否定させました。