1

drupal Web サイトからサインインできるフォームを C#.net で作成したいと考えています。Service 3.x モジュールが有効になっており、Rest サーバーが Web サイトで正しく実行されています。私の唯一の問題は、ユーザー名とパスワードを json 形式にシリアル化する方法ですか?

4

2 に答える 2

1

最後に解決策:

私はウィンドウフォームを持っており、テキストボックス、マスクされたテキストボックス、およびボタン(以下ではbutton3と呼ばれます)が含まれています。

ボタン クリック イベントでは、テキスト ボックスと maskedtextbox の内容が、このクラスを使用して構築されたユーザー オブジェクトに配置されます。

class User
{
    public string username;
    public string password;
    public string name;
    public string number;
    public string address;
    public string email;

    public User(string user, string pass, string name = "", string number = "", string address = "", string email = "")
    {
        this.username = user;
        this.password = pass;
        this.name = name;
        this.number = number;
        this.address = address;
        this.email = email;
    }
}

次に、 Json.netライブラリを使用して、このオブジェクトを json モデルに変換しました

残りの部分では、着信 Cookie が cookieJar に保存されるリクエストを作成し、残りのリクエストでは、この cookieContainer をリクエスト cookieContainer にコピーする必要があり、ログインしたままになります。これはコードの残りの部分です。

        private void button3_Click(object sender, EventArgs e)
    {
        CookieContainer cookieJar = new CookieContainer();
        User user = new User(textBox1.Text,maskedTextBox1.Text);
        string url = "http://"your-web-address"/"your-rest-service"/?q="your-resurce"/user/login.json";
        try
        {
            var request = (HttpWebRequest)WebRequest.Create(url);          
            request.ContentType = "application/json";
            request.Method = "POST";
            request.CookieContainer = cookieJar;

            using (var streamWriter = new StreamWriter(request.GetRequestStream()))
            {
                string query = JsonConvert.SerializeObject(user);

                streamWriter.Write(query);
                streamWriter.Flush();
                streamWriter.Close();
            }
            var response = (HttpWebResponse)request.GetResponse();
            using (var streamReader = new StreamReader(response.GetResponseStream()))
            {
                var responseText = streamReader.ReadToEnd();
            }

    //Check to see if you're logged in
            url = "http://web-address/rest-server/?q=resurce/system/connect.json";
            var newRequest = (HttpWebRequest)WebRequest.Create(url);
            newRequest.CookieContainer = cookieJar;
            newRequest.ContentType = "application/json";
            newRequest.Method = "POST";


            var newResponse = (HttpWebResponse)newRequest.GetResponse();
            using (var newStreamReader = new StreamReader(newResponse.GetResponseStream()))
            {
                var newResponseText = newStreamReader.ReadToEnd();
            }


        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.ToString(), "Can't access server");
        }
    }

注: 2 番目の要求は、drupal が私を認識しているかどうかをテストするためのものです。

于 2013-04-29T17:13:19.830 に答える