HttpWebRequestとhttpsクライアントまで、フルのC#
-
23-08-2019 - |
質問
このコードは動作しない;このロギングに入るサイトがhttpsプロトコルです。うことがあります。このコードで停止する GetRequestStream()
いつでもどこでもというプロトコルの違反の例外は独自のレンダリングメカニズムと..
string username = "user";
string password = "pass";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://moje.azet.sk/prihlasenie.phtml?KDE=www.azet.sk%2Findex.phtml%3F");
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)";
Console.WriteLine(request.GetRequestStream());
using (StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII))
{
writer.Write("nick=" + username + "&password=" + password);
}
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Retrieve your cookie that id's your session
//response.Cookies
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
Console.WriteLine(reader.ReadToEnd());
}
解決
Set要求メソッドGetRequestStreamを呼び出す前に、投稿する
のように
request.Method = "POST";
using (StreamWriter writer = new StreamWriter(request.GetRequestStream(), Encoding.ASCII))
{
writer.Write("nick=" + username + "&password=" + password);
}
他のヒント
私の推測では、あなたが経験している問題は、あなたの代わりにPOSTリクエストのGETリクエストをしているという事実(他の人のように助言しています)によるものであるということです。また、私は、そのページのパスワードフィールドの実際の名前は「heslo」ではなく「パスワード」であることに気づきました。このタイプミスは、Webサーバーが応答を返さないために発生しませんが、サーバーがパスワード値で掲示されるその特定の変数名を探しているので、それは他の問題が発生します。
あいのの長さの合計はいかが?掲示、あらかじめ設定しているのはContentLengthうになります。見 MSDN:
A ProtocolViolationExceptionがスローされます複数の場合の特性に HttpWebRequestクラスは対立する.この例外が生じる場合、アプリケーションを設定し ContentLength財産のSendChunkedィをtrueに、HTTP GET ます。この例外が生じる場合、アプリケーションを送チャンクをサーバー サポートするだけでなくHTTP1.0プロトコルがここには対応しておりません。 この例外が発生した場合 申込みデータを送信を設定せずにContentLength物件 または SendChunkedがfalseの場合バッファは無効とにキープアライブの接続の キープアライブのプロパティがtrue).
ここでは私のためにどのような作品です。
var request = WebRequest.Create(_url);
request.PreAuthenticate = true;
request.Credentials = new NetworkCredential(_userName, _password);