使用WebRequest发布数据 [英] Posting Data Using WebRequest

查看:65
本文介绍了使用WebRequest发布数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用WebRequest对象将数据从一个网页发布到另一个网页。

I want to use WebRequest object to post data from one web page to another.

在源页面中进行WebRequest调用之后,引用request.form集合。目标页面显示为空。我很迷惑。我希望看到我发送的postdata信息

After making the WebRequest call in the source page, referencing the request.form collection in the target page shows empty. I am confused. I expected to see the postdata information I sent

1。)源页面

Imports System.Net
Imports System.IO

Public Class DebugPostFromCode
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    End Sub

    Private Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click

        'Setup parameters used in the post
        Dim username As String = IIf(Request.QueryString("USERNAME") Is Nothing, "gary", Request.QueryString("USERNAME"))
        Dim location As String = IIf(Request.QueryString("LOCATION") Is Nothing, "florence", Request.QueryString("LOCATION"))
        Dim iid As String = IIf(Request.QueryString("IID") Is Nothing, "123456789", Request.QueryString("IID"))
        Dim client As String = IIf(Request.QueryString("CLIENT") Is Nothing, "Gary Motors", Request.QueryString("CLIENT"))


        ' Setup the http request.
        Dim wRequest As HttpWebRequest = WebRequest.Create("http://localhost/PayrollPlusMigration/DebugPost.aspx")
        wRequest.Method = "POST"


        Dim postData As String = String.Format("username={0}&location={1}&runIID={2}&clientName={3}", username, location, iid, client)
        Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
        wRequest.ContentLength = byteArray.Length
        wRequest.ContentType = "application/x-www-form-urlencoded"

        wRequest.Referer = "pagename"


        ' Write the data to the Stream object.
        Dim dataStream As Stream
        dataStream = wRequest.GetRequestStream()
        dataStream.Write(byteArray, 0, byteArray.Length)
        dataStream.Close()


        ' Send the request to the server by calling GetResponse. 
        Dim wResponse As WebResponse = wRequest.GetResponse()


        ' Access response if desired.
        Console.WriteLine(CType(wResponse, HttpWebResponse).StatusDescription)
        dataStream = wResponse.GetResponseStream()              ' Get the stream containing content returned by the server.
        Dim reader As New StreamReader(dataStream)              ' Open the stream using a StreamReader for easy access.
        Dim responseFromServer As String = reader.ReadToEnd()   ' Read the content.
        Response.Write(responseFromServer)                      ' Display the content.


        ' Clean up.
        reader.Close()
        dataStream.Close()
        wResponse.Close()
    End Sub
End Class

1a。)源HTML

1a.) Source HTML

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="DebugPostFromCode.aspx.vb" Inherits="PayrollPlusMigration.DebugPostFromCode" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="frmRedirect" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Post" />
    </div>
    </form>
</body>
</html>

2。)目标网页

Public Class DebugPost
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim sItem
        Dim bolShowOutput As Boolean = True
        Dim bolEndPageExecution As Boolean = True

        'What linebreak character do we need to use?
        Dim strLineBreak
        If bolShowOutput Then
            'We are showing the output, so set the line break character
            'to the HTML line breaking character
            strLineBreak = "<br>"
        Else
            'We are nesting the data dump in an HTML comment block, so
            'use the carraige return instead of <br>
            'Also start the HTML comment block
            strLineBreak = vbCrLf
            Response.Write("<!--" & strLineBreak)
        End If

        Response.Write(strLineBreak & strLineBreak)
        Response.Write("DISPLAYING PAGE MISC" & strLineBreak)
        Response.Write("ISPOSTBACK = [" & Page.IsPostBack.ToString & "]" & strLineBreak)
        Response.Write("ISCALLBACK = [" & Page.IsCallback.ToString & "]" & strLineBreak)
        Response.Write("ISCROSSPAGEPOSTBACK = [" & Page.IsCrossPagePostBack.ToString & "]" & strLineBreak)
        Response.Write("IDENTITY = [" & Page.User.Identity.Name.ToString() & "]")


        Response.Write(strLineBreak & strLineBreak)
        Response.Write("DISPLAYING REQUEST.URLREFERRER" & strLineBreak)
        Response.Write(Request.UrlReferrer)


        Response.Write(strLineBreak & strLineBreak)
        Response.Write("DISPLAYING REQUEST.FORM COLLECTION" & strLineBreak)
        For Each sItem In Request.Form
            Response.Write(sItem)
            Response.Write(" - [" & Request.Form(sItem) & "]" & strLineBreak)
        Next

        Response.Write(strLineBreak & strLineBreak)
        Response.Write("DISPLAYING REQUEST.PARAMS COLLECTION" & strLineBreak)
        For Each sItem In Request.Params
            Response.Write(sItem)
            Response.Write(" - [" & Request.Params(sItem) & "]" & strLineBreak)
        Next

        Response.Write(strLineBreak & strLineBreak)
        Response.Write("DISPLAYING REQUEST.QUERYSTRING COLLECTION" & strLineBreak)
        For Each sItem In Request.QueryString
            Response.Write(sItem)
            Response.Write(" - [" & Request.QueryString(sItem) & "]" & strLineBreak)
        Next


        Response.Write(strLineBreak & strLineBreak)
        Response.Write("DISPLAYING REQUEST.HEADERS COLLECTION" & strLineBreak)
        For Each sItem In Request.Headers
            Response.Write(sItem)
            Response.Write(" - [" & Request.QueryString(sItem) & "]" & strLineBreak)
        Next


        'If we are wanting to hide the output, display the closing
        'HTML comment tag
        If Not bolShowOutput Then Response.Write(strLineBreak & "-->")

        'End page execution if needed
        If bolEndPageExecution Then Response.End()

    End Sub

End Class

2a。目标Html

2a. Target Html

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="DebugPost.aspx.vb" Inherits="PayrollPlusMigration.DebugPost" %>

<!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 runat="server">
    <title></title>
</head>
<body>
</body>
</html>




推荐答案

我建议将你的问题发布到其中一个ASP .NET论坛:

I would recommend posting your question to one of the ASP.NET forums:

http://forums.asp.net/


这篇关于使用WebRequest发布数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆