如何以编程方式登录到网站 [英] How do I login programmatically to a web site
问题描述
我正在尝试登录我们的网站并致电网络服务。我无法让页面登录并继续进行服务调用。我使用我的Delphi应用程序得到的响应是登录页面的代码。
I am trying to log in to our web site and call a web service. I can't get the page to log in and move on to the service call. The response I get with my Delphi app is the code to the log in page.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1"><title>
Login
</title><meta http-equiv="X-UA-Compatible" content="IE=Edge" /><link href="Styles/grid.css" rel="stylesheet" /><link href="Styles/styles.css" rel="stylesheet" type="text/css" />
<!--add the jquery library first-->
<script type="text/javascript" src="Scripts/jquery-1.11.0.min.js"></script>
<!-- the jquery ui comes next-->
<script type="text/javascript" src="Scripts/jquery-ui-1.10.4.custom.min.js"></script>
<link type="text/css" href="Styles/theme/jquery-ui-1.10.4.custom.css" rel="stylesheet" />
<!--other custom javascript files go last-->
<script type="text/javascript" src="Scripts/accordionnav.js"></script>
<script type="text/javascript" src="Scripts/loadingMsg.js"></script>
<script type="text/javascript" src="Scripts/Dialogs.js"></script>
</head>
<body id="body">
<form method="post" action="Login.aspx?ReturnUrl=%2fservice1.asmx%2fAdd" önsubmit="javascript:return WebForm_OnSubmit();" id="form2">
<div class="aspNetHidden">
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKLTIzNjM3MzI1Ng9kFgJmD2QWAgIDD2QWAgILD2QWBgIDD2QWAgIBD2QWAgIHDw8WAh4UVmFsaWRhdGlvbkV4cHJlc3Npb24FSig/PV4uezgsMTV9JCkoPz0uKlxkKSg/PS4qW2Etel0pKD89LipbQS1aXSkoPz0uKlshQCMkJV4mKigpXytdKSg/IS4qXHMpLiokZGQCBQ9kFgICAw8PZBYCHgdvbmNsaWNrBSRkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd3YWl0JztkAgcPZBYCAgMPD2QWAh8BBSRkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvciA9ICd3YWl0JztkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQpjdGwwMCRsb2dvO/1Hi1g+jNairyPZjBZb5CycRFaJ3WvRK9MWSnt+H6o=" />
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form2'];
if (!theForm) {
theForm = document.form2;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//
</script>
<script src="/WebResource.axd?d=nApapybjnnaEBxXK-cV-gXMdjpdvHJ8U0nxsjWU3DGWci9InpgHlIjJYE5OAemLONlJrQRGJDnBwNL144Z5vLams9JX3UAigdIosxmljxjM1&t=635195625120000000" type="text/javascript"></script>
<script src="/WebResource.axd?d=dmNuWgvK1cJKged6ODWTrMrvIXbfgu3wkWEBa97D9j7gPYKZoszeiODoDOBARj7NRhpfKcJnsu3GXVRUz9TKq5Zs6KyF1_FI2WSiSihZ2C81&t=635195625120000000" type="text/javascript"></script>
<script src="/WebResource.axd?d=RKMWTMp276ah9smNMaTaT93j8b99B3SaojbaVzhOI1r7p0ax1UuEaDfHnC74RoiqE1eOBfsZTN2ZkFVBvddAJ8dD0FuS0KD4NYUxMQjTkG01&t=635195625120000000" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function WebForm_OnSubmit() {
if (typeof(ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) return false;
return true;
}
//
</script>
<div class="aspNetHidden">
<input type="hidden" name="__PREVIOUSPAGE" id="__PREVIOUSPAGE" value="rJ_wa2apHM10cSuPL2Cg0faw8wtKNthKuF9A2Zj9rnyIpjIo21Q_nbAutTGFXA75II16TruK4tJn6BvfXgc23e5dKzZFvNQ-m8Fv9Y0kNwg1" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEdAAn2TWd+zjsedSMWxIejXjL3LmJxEO41Lgaox/xxNW0V6qfGEXROoiEoFFs3WvEoA+yX4LuzvCRxfj8HFGIF8sQiRJpdpCB8AfawTfV9IANlLBNNSMVb45A5RQeIrvQqHeq54IW3Kg6YVLraV4lc5ZRAwt0jNPAodXSy1b5w/lufuYAEAziu4pBRKAVCZXRhemLmRDZ+RQnkKRQyHw5/VDsgbw8/DW8FVRMBIZRVCVM5LA==" />
</div>
<div id="header">
<div id="loading">
<div id="loadingcontent">
<p id="loadingspinner">
<!--the text passed to the spinner will display here-->
</p>
</div>
</div>
<div style="height:58px;margin-removed20px;">
<!--links in upper-right corner-->
<div class="top-links">
<!-- none for this master-->
</div><!--end top links-->
<!-- small, bulleted links above red line, let's call this the quick menu..-->
<div class="top-menu" >
<ul >
<!-- none for this master-->
</ul>
</div><!-- end #top-menu -->
</div>
<div id="main-menu">
<div style="height:58px;margin-removed20px;">
<input type="image" name="ctl00$logo" id="logo" alt="logo" src="Images/logo.png" önclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$logo", "", true, "", "/", false, false))" />
</div>
</div> <!-- end #main-menu -->
</div> <!-- end #header -->
<div class="subPageWrap" >
<!-- Start Left Column (menu) -->
<div class="col4 subpagemenu">
</div><!-- End Left Column (menu) -->
<!-- Start Right Column (content) -->
<div class="col3">
<div>
<div id="bodyremoved_pnlLogin" önkeypress="javascript:return WebForm_FireDefaultButton(event, 'bodyremoved_btnLogin')" style="height:550px">
<div id="bodyremoved_Panel1" style="height:200px;">
<!-- the height of this panel keeps the buttons aligned as the user clicks the links-->
<h1 class="pageTitle">Login</h1>
<!-- username and password controls-->
<table class="whitetable2">
<tr >
<td style="width:100px">
<label for="bodycontent_txtUserName" id="bodycontent_lblUserName" class="lbl">User Name: </label>
</td>
<td>
<input name="ctl00$bodycontent$txtUserName" type="text" maxlength="50" id="bodycontent_txtUserName" style="width:250px;" />
<span id="bodyremoved_rfvUserName" class="redtext" style="display:none;">* Required Field</span>
</td>
</tr>
<tr >
<td >
<label for="bodycontent_txtPassword" id="bodycontent_lblPassword" class="lbl">Password: </label>
</td>
<td>
<input name="ctl00$bodycontent$txtPassword" type="password" maxlength="50" id="bodycontent_txtPassword" style="width:250px;" />
<span id="bodyremoved_rfvPassword" class="redtext" style="display:none;">* Required Field</span>
</td>
</tr>
</table>
</div>
<br /><br />
<div class="pagebuttonarea" >
<input type="submit" name="ctl00$bodycontent$btnLogin" value="Login" önclick="javascript:showSpinner('Accessing your account...');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$bodycontent$btnLogin", "", true, "Login", "", false, false))" id="bodycontent_btnLogin" class="BasicButton" class="BasicButton" />
<input type="submit" name="ctl00$bodycontent$btnClear" value="Clear" id="bodycontent_btnClear" class="BasicButton" class="BasicButton" />
<br /><br />
<!--helpful links-->
<a id="bodycontent_lnkForgotPassword" class="grayitalictext" href="java<!-- no -->script:__doPostBack('ctl00$bodycontent$lnkForgotPassword','')">Forgot your password?</a>
|
<a id="bodycontent_lnkForgotUsername" class="grayitalictext" href="java<!-- no -->script:__doPostBack('ctl00$bodycontent$lnkForgotUsername','')">Forgot your username?</a>
|
<a id="bodycontent_lnkNewAcct" class="grayitalictext" href="java<!-- no -->script:__doPostBack('ctl00$bodycontent$lnkNewAcct','')">Need to create a new account?</a>
</div>
</div><!--end main login-->
</div>
</div> <!-- End Right Column (content) -->
<div class="cleardiv"> </div>
</div> <!-- End .subPageWrap -->
<!-- for google analytics-->
<script
src="https://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1581194-2";
urchinTracker();
</script>
<script type="text/javascript">
//<![CDATA[
var Page_Validators = new Array(document.getElementById("bodycontent_rfvUserName"), document.getElementById("bodycontent_rfvPassword"));
//
</script>
<script type="text/javascript">
//<![CDATA[
var bodycontent_rfvUserName = document.all ? document.all["bodycontent_rfvUserName"] : document.getElementById("bodycontent_rfvUserName");
bodycontent_rfvUserName.controltovalidate = "bodycontent_txtUserName";
bodycontent_rfvUserName.errormessage = "* Required Field";
bodycontent_rfvUserName.display = "Dynamic";
bodycontent_rfvUserName.validationGroup = "Login";
bodycontent_rfvUserName.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
bodycontent_rfvUserName.initialvalue = "";
var bodycontent_rfvPassword = document.all ? document.all["bodycontent_rfvPassword"] : document.getElementById("bodycontent_rfvPassword");
bodycontent_rfvPassword.controltovalidate = "bodycontent_txtPassword";
bodycontent_rfvPassword.errormessage = "* Required Field";
bodycontent_rfvPassword.display = "Dynamic";
bodycontent_rfvPassword.validationGroup = "Login";
bodycontent_rfvPassword.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
bodycontent_rfvPassword.initialvalue = "";
//
</script>
<script type="text/javascript">
//<![CDATA[
var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
ValidatorOnLoad();
}
function ValidatorOnSubmit() {
if (Page_ValidationActive) {
return ValidatorCommonOnSubmit();
}
else {
return true;
}
}
WebForm_AutoFocus('bodycontent_txtUserName');//
</script>
</form>
</body>
</html>
The Delphi code that makes the call is here:
The Delphi code that makes the call is here:
unit WebServiceCaller;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, IdHTTP, IdSSLOpenSSL;
type
TForm1 = class(TForm)
Button1: TButton;
EditWindow: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function PostExample: string;
var
lHTTP: TIdHTTP;
lParamList: TStringList;
LHandler: TIdSSLIOHandlerSocketOpenSSL;
Str: TStringList;
begin
lParamList := TStringList.Create;
lParamList.Add('a=5');
lParamList.Add('b=39');
lHTTP := TIdHTTP.Create(nil);
LHandler := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
try
lHTTP.HandleRedirects := true;
lHTTP.IOHandler:=LHandler;
Str := TStringList.Create;
Str.Add('bodycontent_txtUserName='+userName);
Str.Add('bodycontent_txtPassword='+Passwrod);
Str.Add('bodycontent_btnLogin=Login');
Result:= lHTTP.Post('https://withheld/login.aspx', Str);
FreeAndNil(str);
Result := lHTTP.Post('https://withheld/service1.asmx/Add', lParamList);
finally
FreeAndNil(lHTTP);
FreeAndNil(lParamList);
FreeAndNil(LHandler);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EditWindow.Text := PostExample;
end;
end.
I’m fairly sure what I’m doing wrong is what is stored in ’Str’ but I haven’t done this before and after reading and searching a good bit for an explaination I have decided to turn to you good folks for assistance.
I'm fairly sure what I'm doing wrong is what is stored in 'Str' but I haven't done this before and after reading and searching a good bit for an explaination I have decided to turn to you good folks for assistance.
推荐答案
logo\" id=\"logo\" alt=\"logo\" src=\"Images/logo.png\" önclick=\"javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(\"ctl00
logo" id="logo" alt="logo" src="Images/logo.png" önclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00
logo\", \"\", true, \"\", \"/\", false, false))\" />
</div>
</div> <!-- end #main-menu -->
</div> <!-- end #header -->
<div class=\"subPageWrap\" >
<!-- Start Left Column (menu) -->
<div class=\"col4 subpagemenu\">
</div><!-- End Left Column (menu) -->
<!-- Start Right Column (content) -->
<div class=\"col3\">
<div>
<div id=\"bodyremoved_pnlLogin\" önkeypress=\"javascript:return WebForm_FireDefaultButton(event, 'bodyremoved_btnLogin')\" style=\"height:550px\">
\t
<div id=\"bodyremoved_Panel1\" style=\"height:200px;\">
\t\t<!-- the height of this panel keeps the buttons aligned as the user clicks the links-->
<h1 class=\"pageTitle\">Login</h1>
<!-- username and password controls-->
<table class=\"whitetable2\">
<tr >
<td style=\"width:100px\">
<label for=\"bodycontent_txtUserName\" id=\"bodycontent_lblUserName\" class=\"lbl\">User N ame: </label>
</td>
<td>
<input name=\"ctl00
logo", "", true, "", "/", false, false))" /> </div> </div> <!-- end #main-menu --> </div> <!-- end #header --> <div class="subPageWrap" > <!-- Start Left Column (menu) --> <div class="col4 subpagemenu"> </div><!-- End Left Column (menu) --> <!-- Start Right Column (content) --> <div class="col3"> <div> <div id="bodyremoved_pnlLogin" önkeypress="javascript:return WebForm_FireDefaultButton(event, 'bodyremoved_btnLogin')" style="height:550px"> <div id="bodyremoved_Panel1" style="height:200px;"> <!-- the height of this panel keeps the buttons aligned as the user clicks the links--> <h1 class="pageTitle">Login</h1> <!-- username and password controls--> <table class="whitetable2"> <tr > <td style="width:100px"> <label for="bodycontent_txtUserName" id="bodycontent_lblUserName" class="lbl">User Name: </label> </td> <td> <input name="ctl00
bodycontent
bodycontent
这篇关于如何以编程方式登录到网站的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!