Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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# 打开登录页面,插入登录信息,然后单击登录按钮_C#_Asp.net - Fatal编程技术网

C# 打开登录页面,插入登录信息,然后单击登录按钮

C# 打开登录页面,插入登录信息,然后单击登录按钮,c#,asp.net,C#,Asp.net,我想打开一个登录页面,如www.site.com/login.php 插入用户名和密码 并调用登录按钮 所有这些都应该在服务器(而不是浏览器)中逐步完成 可以这样做吗?您可以向登录按钮提交的任何位置发送POST请求。 只需在请求中传递用户名和密码。每个登录页面通常采用以下格式: <form action="login.extention" method="post or get"> <input name="username" type="text" /> <inp

我想打开一个登录页面,如www.site.com/login.php

插入用户名和密码

并调用登录按钮

所有这些都应该在服务器(而不是浏览器)中逐步完成


可以这样做吗?

您可以向登录按钮提交的任何位置发送POST请求。
只需在请求中传递用户名和密码。

每个登录页面通常采用以下格式:

<form action="login.extention" method="post or get">
<input name="username" type="text" />
<input name="password" type="password" />
</form>

您必须通过get或post(通常是post)将信息发送到操作页面。

如果您想以登录用户的身份触发请求,您必须在登录post请求(可能会设置登录cookie)和其他请求之间保留一个实例

        var cookieJar = new CookieContainer();            
        var loginData = new Dictionary<string,string>() {
            // be carefull to use the same keys/names as the login form
            { "username", "LightWing" },
            { "password", "l33tPwD" } 
        };
        var request = (HttpWebRequest)WebRequest.Create("http://.../login.php");
        request.CookieContainer = cookieJar;
        request.AllowAutoRedirect = true;
        request.Method = "POST";

        // build the POST data
        byte[] dataBuffer = Encoding.ASCII.GetBytes(string.Join("&", loginData.AllKeys.Select(x => string.Concat(HttpUtility.UrlEncode(x), "=", HttpUtility.UrlEncode(loginData[x])))));
        request.ContentLength = dataBuffer.LongLength;
        request.ContentType = "application/x-www-form-urlencoded";
        using (var requestStream = request.GetRequestStream())
        {
            requestStream.Write(dataBuffer, 0, dataBuffer.Length);
            requestStream.Flush();
        }
        var response = request.GetResponse();
        using (var responseStream = response.GetResponseStream())
        {
            // do some reading if you want..
        }

        // now _cookieJar should contain the login cookie...
        // you can trigger further requests as a logged in user:
        request = (HttpWebRequest)WebRequest.Create("http://.../restrictedPage.php");
        request.CookieContainer = cookieJar; // reuse them cookies!
        request.AllowAutoRedirect = true;
        request.Method = "GET";
        var response = request.GetResponse();
        using (var responseStream = response.GetResponseStream())
        {
            // read the restricted page response
        }
var-cookieJar=new-CookieContainer();
var loginda=新字典(){
//小心使用与登录表单相同的密钥/名称
{“用户名”,“LightWing”},
{“密码”,“l33tPwD”}
};
var request=(HttpWebRequest)WebRequest.Create(“http://.../login.php");
request.CookieContainer=cookieJar;
request.AllowAutoRedirect=true;
request.Method=“POST”;
//构建POST数据
byte[]dataBuffer=Encoding.ASCII.GetBytes(string.Join(&),loginda.AllKeys.Select(x=>string.Concat(HttpUtility.UrlEncode(x),“=”,HttpUtility.UrlEncode(loginda[x]));
request.ContentLength=dataBuffer.LongLength;
request.ContentType=“application/x-www-form-urlencoded”;
使用(var requestStream=request.GetRequestStream())
{
Write(dataBuffer,0,dataBuffer.Length);
requestStream.Flush();
}
var response=request.GetResponse();
使用(var responseStream=response.GetResponseStream())
{
//如果你想的话,读点书。。
}
//现在,cookieJar应该包含登录cookie。。。
//您可以作为登录用户触发更多请求:
请求=(HttpWebRequest)WebRequest.Create(“http://.../restrictedPage.php");
request.CookieContainer=cookieJar;//重复使用饼干!
request.AllowAutoRedirect=true;
request.Method=“GET”;
var response=request.GetResponse();
使用(var responseStream=response.GetResponseStream())
{
//阅读受限页面响应
}

我还编写了一个简单的实用程序,帮助您刮取使用回发的Asp.net WebForms页面。你可以找到它。

我也为一个小项目做了同样的事情

我在.aspx页面中添加超链接,单击后自动将我登录到外部站点

在加载页面上调用以下代码

HyperLink1.NavigateUrl = "javascript:__doExternalPost(\"http://www.xyz.com/login.jsp\");";

if (Page.IsPostBack == false)
{
       this.Page.ClientScript.RegisterHiddenField("username", USERNAME);                                                        
       this.Page.ClientScript.RegisterHiddenField("password", PASSWORD);
}
在.aspx页面中添加以下javascript

function __doExternalPost(targetUrl) 
{
    theForm.__VIEWSTATE.value = "";
    theForm.encoding = "application/x-www-form-urlencoded";
    theForm.action = targetUrl;
    theForm.target = "_blank";
    theForm.submit();
}

希望它能提供一些帮助

让一个ASP.NET站点自动让您登录到另一个基于PHP的站点的目的是什么?是的,如果可能,我想在登录后下载一个文件。