none
HTTPwebrequest的问题! RRS feed

  • 问题

  •            
    红色都是变量或则方法.ExtractViewState是一个方法,把返回页面中的_VIEWSTATE值拿出来.
      这段代码是在A程序的A页面的一个BUTTON事件中执行的.
      而paths这个变量呢是我从数据库里面取出来的B程序的B页面(即B的登陆页面)
      而postData这个变量呢是我品成的一个字符串.用来传到服务器.整个过程都执行顺利.
      最后responseData这个变量返回的是在B程序中的B页面成功登陆而正确跳转的C页面html信息.
      C页面是显示在我的浏览器上面了,但是本身A程序的A页面.却和C页面在同一个页面中,C在上面A在下面.不知道这个是因为什么,非常苦恼啊.求大虾帮忙!
      Dim webRequest As HttpWebRequest
      webRequest = CType(webRequest.Create(paths), HttpWebRequest)
      Dim responseReader As StreamReader
      responseReader = New StreamReader(webRequest.GetResponse().GetResponseStream())
      Dim responseData As String
      responseData = responseReader.ReadToEnd()
      responseReader.Close()
      'extract the viewstate value and build out POST data

      Dim viewState As String = ExtractViewState(responseData)
      Dim postData As String = String.Format("__VIEWSTATE={0}&txtLogin={1}&txtPw={2}&btnLogin=Agree and Login", viewState, Me.ViewState("loginID"), Me.ViewState("Password"))
      ' have a cookie container ready to receive the forms auth cookie
      Dim cookies As New CookieContainer
      ' now post to the login form
      webRequest = CType(webRequest.Create(paths), HttpWebRequest)
      webRequest.Method = "POST"
      webRequest.ContentType = "application/x-www-form-urlencoded"
      webRequest.CookieContainer = cookies
      'cookies.Add(webRequest.CookieContainer.)

      ' write the form values into the request message
      Dim requestWriter As StreamWriter
      requestWriter = New StreamWriter(webRequest.GetRequestStream())
      requestWriter.Write(postData)

      requestWriter.Close()
      responseReader = New StreamReader(webRequest.GetResponse().GetResponseStream())

      'and read the response
      responseData = responseReader.ReadToEnd()

      responseReader.Close()
      Response.Write(responseData)
     
     
    2010年4月8日 2:42

全部回复

  • 看不懂 C在上面A在下面,能不能贴个图

     

    responseData 是什么内容


    http://feiyun0112.cnblogs.com/
    2010年4月8日 3:16
    版主
  •             responseData  就是我的C页面的所有内容.

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    	<HEAD>
                             ........
    	</HEAD>
    	<body MS_POSITIONING="FlowLayout">
    		<form id="FormA" method="post" runat="server">
                                  ........
    		</form>
    	</body>
    </HTML>

    responseData 里面的数据就是上面的内容当然....都是写不重要的信息拉,我没贴出来.<%& page language="vb"..........%>这种页面上的标头,responseData 里面是没有的!

    我刚才尝试把responseData 用SESSION保存,然后找了一个空的页面(D.aspx),把页面里面的HTML都拿掉,然后在页面的pageload中写上我的reponse.write(responseData).这样我的C页面是完全显示了(但是在ie浏览器的地址拦里面的地址名仍然是我这个空白页面的地址(D.aspx).),但是我在这个页面进行任何操作都会让我跳回登陆页面,说我的SESSION过期.我想我这个问题首先是解决跨不同项目的问题,然后是我这个页面显示问题.希望大虾能找到好的方法.谢谢

     

    2010年4月8日 3:26