0

我正在尝试使用 Alamofire 发出 Post 请求,以便以编程方式登录到 HTML 页面。

这里是 HTML

<!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>
  <script type="text/javascript" src="http://icrew.airmacau.com.mo//JavaScripts/jquery-1.4.js"></script>
  <script type="text/javascript" src="http://icrew.airmacau.com.mo//JavaScripts/JScript.js"></script>
  <script type="text/javascript" src="http://icrew.airmacau.com.mo//JavaScripts/jquery.table.sort.js"></script>
  <script type="text/javascript" src="http://icrew.airmacau.com.mo//JavaScripts/jquery.table.page.js"></script>
  <title>
    Air Macau's Online Preparation System
</title>
  <link href="Css/login.css" rel="stylesheet" type="text/css">
  <link href="App_Themes/Default/dialog.css" type="text/css" rel="stylesheet">
  <link href="App_Themes/Default/img/calendar-win2k-cold-1.css" type="text/css" rel="stylesheet">
  <link href="App_Themes/Default/index.css" type="text/css" rel="stylesheet">
 </head> 
 <body> 
  <form name="form1" method="post" action="Login.aspx" id="form1"> 
   <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE3MjIwMzY0MTRkGAEFHl9fQ29udHJvbHNSZXF1aXJlUG9zdEJhY2tLZXlfXxYBBQtsb2dpbkJ1dHRvbSnqD+GLKl7iJjygY5goYwB/Pff1"> 
   <div id="htmls"></div> 
   <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="C2EE9ABB"> 
   <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBAKo/8+8DwKPpuq2CALogbjNDgL59eu0Cd3qM6GPMChXJ735ACwTVvt1ix//"> 
   <div class="frame"> 
    <div class="outer"> 
     <div id="middle"> 
      <div id="inner"> 
       <div class="loginBG"> 
        <div id="logoMacau"> 
        </div> 
        <div id="airImg"> 
        </div> 
        <div id="loginBox"> 
         <input name="userName" type="text" id="userName"> 
         <input name="userPassword" type="password" id="userPassword"> 
         <div id="Div1" onclick="alert('submit')"> 
         </div> 
         <input type="image" name="loginButtom" id="loginButtom" src="images/btnlogin.png" border="0"> 
         <div id="divPrompt" style=" position:absolute; top:-31px; left:-200px; right: -187px; color:Red; font-size:large; height: 25px;"> 
          <span id="lblPrompt"><b></b></span>
         </div> 
        </div> 
       </div> 
      </div> 
     </div> 
    </div> 
   </div> 
  </form>   
 </body>
</html>

为了登录用户,我应该将哪个字段传递给 Alamofire 发布请求?我想我错过了一些领域......

现在我在这里尝试过:

ps:__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION 是我在进行 get 调用时获得的信息,我只是从 html 中解析并提取值,因为它们是隐藏字段。

let parm = ["__VIEWSTATE":result, "__VIEWSTATEGENERATOR":generator, "__EVENTVALIDATION":evaluVal, "userName":"1234", "userPassword": "1234pass"]

  
AF.request ("https://icrew.airmacau.com.mo/Login.aspx",method: .post, parameters: parm, encoding: URLEncoding.default).response { response in
    if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) {
        do {
            let html: String = utf8Text
            let doc: Document = try SwiftSoup.parse(html)
            print(doc.body())

        } catch let error {
            print(error.localizedDescription)
        }
    }
}

4

0 回答 0