0

C#アプリケーションをWebサイトアプリケーションにログインさせる方法を理解しようとしています。どこから始めればいいのか全くわかりません。通常、Webサイトでは、ユーザーはユーザーとパスワードを入力するだけで、[覚えている]ボタンをチェックするか、チェックしないでログインをクリックします。私のPythonフレームワークはログインを確認してから、応答のヘッダーにCookieを設定して、ログインCookieを保存します。ユーザーがページにアクセスしようとすると、Cookieが検出されるかどうかが確認され、検出された場合は、ユーザーはログインしたままになります。

デスクトップC#アプリケーションでこのようなことをどのように行うかについては、まったくわかりません。誰かが私を正しい方向に向けることができますか?

ありがとう

4

2 に答える 2

1

デスクトップC#アプリケーションをWebサイトアプリケーションにログインさせる方法を理解しようとしています

WebClient クラス を使用します。

string string loginData = "username=***&passowrd=***&next=/hurt/";

WebClient wc = new WebClient();

wc.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.56 Safari/536.5");
wc.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
wc.Headers.Add("Accept-Encoding", "identity");
wc.Headers.Add("Accept-Language", "en-US,en;q=0.8");
wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
wc.Headers.Add("ContentType", "application/x-www-form-urlencoded");
string response = wc.UploadString("http://xyz.com/accounts/login/", "POST", loginData);
于 2013-02-21T03:26:32.157 に答える
0

ブラウザをシミュレートする場合は、COMを使用します。以下の例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

// Add a reference to "C:\Windows\System32\shdocvw.dll"

namespace BrowserAutomation
{
    class Program
    {   
        static void Main(string[] args)
        {
            var ie = new SHDocVw.InternetExplorer();
            // Ensure that ie.Quit() is called at the end via the destructor
            var raii = new IE_RAII(ie);
            // Just so you can see what's going on for now
            ie.Visible = true;
            ie.Navigate2("http://www.wellsfargo.com");
            var document = GetDocument(ie);
            var userid = document.getElementById("userid");
            userid.Value = "billy.everyteen";
            var password = document.getElementById("password");
            password.Value = "monroebot";
            var form = document.Forms("signon");
            form.Submit();
            // Hang out for a while...
            System.Threading.Thread.Sleep(10000);
        }
        // Poor man's check and wait until DOM is ready
        static dynamic GetDocument(SHDocVw.InternetExplorer ie)
        {
            while (true)
            {
                try
                {
                    return ie.Document;
                }
                catch (System.Runtime.InteropServices.COMException e)
                {
                    if (e.Message != "Error HRESULT E_FAIL has been returned " +
                                     "from a call to a COM component.")
                    {
                        throw e;
                    }
                }
                System.Threading.Thread.Sleep(1000);
            }
        }
    }
    class IE_RAII
    {
        public IE_RAII(SHDocVw.InternetExplorer ie)
        {
            _ie = ie;
        }
        ~IE_RAII()
        {
            _ie.Quit();
        }
        private SHDocVw.InternetExplorer _ie;
    }
}
于 2013-02-21T04:24:56.767 に答える