Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#.net和json远程登录drupal网站_C#_Json_Drupal 7 - Fatal编程技术网

使用C#.net和json远程登录drupal网站

使用C#.net和json远程登录drupal网站,c#,json,drupal-7,C#,Json,Drupal 7,我想在C#net中创建一个表单,它可以让我通过drupal网站登录。 服务3.x模块已启用,Rest服务器正在我的网站上正确运行。 我唯一的问题是如何将用户名和密码序列化为json格式?您的问题很模糊,但我可以告诉您登录的方法 要使用服务登录Drupal站点,可以启用用户资源和操作登录(和注销) 使用以下命令登录(根据您的设置进行更改) 你的问题很模糊,但我可以告诉你登录的方法 要使用服务登录Drupal站点,可以启用用户资源和操作登录(和注销) 使用以下命令登录(根据您的设置进行更改) 最后是

我想在C#net中创建一个表单,它可以让我通过drupal网站登录。 服务3.x模块已启用,Rest服务器正在我的网站上正确运行。
我唯一的问题是如何将用户名和密码序列化为json格式?

您的问题很模糊,但我可以告诉您登录的方法

要使用服务登录Drupal站点,可以启用用户资源和操作登录(和注销)

使用以下命令登录(根据您的设置进行更改)


你的问题很模糊,但我可以告诉你登录的方法

要使用服务登录Drupal站点,可以启用用户资源和操作登录(和注销)

使用以下命令登录(根据您的设置进行更改)

最后是一个解决方案:

我有一个windows窗体,包含一个文本框、一个蒙面文本框和一个按钮(下面称为button3)

在button click事件中,textbox和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模型

在rest中,它发出一个请求,传入的cookie将存储在cookieJar中,对于rest请求,您必须将此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");
        }
    }
注意:第二个请求只是测试drupal是否认识我。

最后一个解决方案:

我有一个windows窗体,包含一个文本框、一个蒙面文本框和一个按钮(下面称为button3)

在button click事件中,textbox和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模型

在rest中,它发出一个请求,传入的cookie将存储在cookieJar中,对于rest请求,您必须将此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");
        }
    }

注意:第二个请求只是测试drupal是否认识我。

我正在c#net中寻找解决方案。我是说我该怎么做?我可以调用httprequest,但不能保存会话:(我没有实现无会话解决方案,所以在这方面我帮不了你。读完本文后,我放弃了对纯RESTful Web服务和drupal的追求:(我在c#.net中寻找解决方案。我的意思是我应该怎么做?我可以调用httprequest,但不能保存会话:(我还没有实现无会话解决方案,所以在这方面我帮不了你。读完本文后,我放弃了对纯RESTful Web服务和drupal的追求:(