この問題のヘルプを書いています。当社のサプライヤーのサイトに接続し、請求書を PDF で自動的にダウンロードしてください。私はいくつかの方法を試しました:
1: Web ブラウザ - PDF へのリンクがあるページにアクセスできますが、ディスクに保存できません (新しいウィンドウで開きます) (PDF はオンザフライで生成され、このタイプのものですhttps://www.axxes.fr/it/client/pge1_relevefacturepdf.aspx?selnumdoc=700051126&typ=DUP&lng=ES&famdoc=DUP&typfic=PDF
) 。
2:Watin - Webbrowserのようにpdfを自動保存できない
3: HttpWebRequest - ログインできません。これは私が使用するコードです:
public void doSomething()
{
string post_data = "_cm_url=/it/client/default.aspx&_cm_user=user&_cm_pwd=pwd";
string uri = "https://www.axxes.fr/it/identification/default.cgi";
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(uri); request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.Method = "POST";
byte[] postBytes = Encoding.ASCII.GetBytes(post_data);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = postBytes.Length;
System.Net.ServicePointManager.CertificatePolicy = new MyPolicy();
Stream requestStream = request.GetRequestStream();
requestStream.Write(postBytes, 0, postBytes.Length);
requestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
listBox1.Text = (new StreamReader(response.GetResponseStream()).ReadToEnd());
Console.WriteLine(response.StatusCode);
}
public class MyPolicy : ICertificatePolicy
{
public bool CheckValidationResult(ServicePoint srvPoint,
X509Certificate certificate, WebRequest request,
int certificateProblem)
{
return true;
}
}
サプライヤーのサイトはhttps://www.axxes.fr/it/です 。認証モジュールは次のとおりです。
<form name="blocident" action="/it/identification/default.cgi" method="POST">
<input type="hidden" name="_cm_url" value="/it/client/default.aspx">
<div class="e_idlign">
<div class="e_idcol1">
<label for="login" accesskey="2">Login</label>
<input type="text" class="e_chp77px" name="_cm_user" id="login">
</div>
<div class="nof"></div>
<div class="e_idcol2">
<label for="password">Password</label>
<input type="password" class="e_chp77px" name="_cm_pwd" id="password">
</div>
</div>
<div class="e_idlign">
<input type="image" alt="Valider l'identification" src="/it/images/css/env/bt_ok.gif" class="e_btOk" name="btOk">
</div>
<ul id="e_identLien">
<li class="sep">
<a href="/it/pge1_clientmoralcreation.aspx">Iscriversi</a>
</li>
<li>
<a href="/it/pge1_question.aspx">Password dimenticata?</a>
</li>
</ul>
</form>
Fiddler を使用して、ナビゲーション ブラウザーのトラフィックを分析しようとしましたが、その理由は次のとおりです。
1
POST /it/identification/default.cgi HTTP/1.1
_cm_url=%2Fit%2Fclient%2Fdefault.aspx&_cm_user=user&_cm_pwd=password&btOk.x=23&btOk.y=12
2
GET /it/client/default.aspx HTTP/1.1
ASP.NET_SessionId=3hbcfrzstvxwo145tpgpvmvw
IdSes=4fba1069405c428bab1........
3
GET /it/client/pge1_clientrecherche.aspx HTTP/1.1
ASP.NET_SessionId=3hbcfrzstvxwo145tpgpvmvw
IdSes=4fba1069405c428.............
私が投稿したコードは、CGI への要求にすぎません。アクセス方法が正直わかりません。何かが足りないようです..クッキー?それを管理する方法は?ヒントはありますか?
何か案が?もう一度サンクス