Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTP请求GET/POST_C#_Asp.net_Visual Studio 2010 - Fatal编程技术网

C# HTTP请求GET/POST

C# HTTP请求GET/POST,c#,asp.net,visual-studio-2010,C#,Asp.net,Visual Studio 2010,我在VisualStudio2010创建网站。所以,我应该打开一个新表单,并从第一个表单发送信息。我使用文本文件(我从第一页写到另一个文件,并以新的形式阅读这个文件),这是可行的。但我希望通过GET/POST请求创建连接。我从你那里得到这个密码。 项目已编译,但超出了时间限制。所以,我附加了代码和错误 第一页的代码 var request = (HttpWebRequest)WebRequest.Create("http://localhost:55590/WebSite2/Form2

我在VisualStudio2010创建网站。所以,我应该打开一个新表单,并从第一个表单发送信息。我使用文本文件(我从第一页写到另一个文件,并以新的形式阅读这个文件),这是可行的。但我希望通过GET/POST请求创建连接。我从你那里得到这个密码。 项目已编译,但超出了时间限制。所以,我附加了代码和错误

第一页的代码

var request = (HttpWebRequest)WebRequest.Create("http://localhost:55590/WebSite2/Form2.aspx");

    var postData = text;
    var data = Encoding.ASCII.GetBytes(postData);

    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = data.Length;

    using (var stream = request.GetRequestStream())
    {
        stream.Write(data, 0, data.Length);
    }

    var response = (HttpWebResponse)request.GetResponse();

    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
第二页的代码

var request = (HttpWebRequest)WebRequest.Create("http://localhost:55590/WebSite2/Form2.aspx");

    var response = (HttpWebResponse)request.GetResponse();

    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
错误


我试图从源代码中获取第二个变体,但得到了错误。所以,请帮帮我,你可以这样试试

var request = (HttpWebRequest)WebRequest.Create("http://localhost:55590/WebSite2/Form2.aspx");

var postData = text;
var data = Encoding.ASCII.GetBytes(postData);

request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;

using (var stream = request.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}

 HttpWebResponse httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
 using (StreamReader streamReader = new StreamReader(httpResponse.GetResponseStream()))
 {
     result = streamReader.ReadToEnd();
 }

因此,有很多方法可以将数据和“东西”从一个网页发送到下一个网页

Session()当然是一种可能的方法

另一种方法是在URL中使用参数,因此在许多网站上经常会看到这些参数

就在我写这篇文章时,我们看到StackOverFlow上的URL如下:

stackoverflow.com/questions/66294186/http请求获取帖子?noredirect=1 35; comment117213494_66294186

因此,上面是堆栈溢出传递值的方式

因此,URL os中的session()和参数是通用的

但是,asp.net有一个“功能”,可以将上一页传递到下一页。因此,在您加载的下一个页面中,只需从第一个页面中提取/获取/获取/使用内容就变得很简单了。因此,这个功能是asp.net的一部分,它将为您完成传递上一页的所有脏活

嗯,我想知道人们是否必须通过并从上一页获取值?我打赌这个最常见的想法一定已经被处理过了,对吧?这不仅仅是一个普通的说法,比如说人类如何呼吸空气?它也是asp.net的一个特性

所以,一个非常简单的方法就是当你点击一个按钮,然后跳转到下一个有问题的页面?好吧,如果设置正确,那么你可以简单地使用“上一页”

您可以在页面加载时执行此操作:

if (IsPostBack == false)
{
    TextBox txtCompay = PreviousPage.FindControl("txtCompnay");
    Debug.Print("Value of text box company on prevous page = " + txtCompay.Text);
}
这种方法很好,因为您不必提前决定是否需要上一页控件中的2个或20个值—您真的不在乎

这是怎么回事

上一页仅基于两种方法有效

第一种方式:

您在表单上放置的按钮通常会有“代码隐藏”,当然会跳转或转到下一页

该命令(在代码隐藏中)是典型的:

Response.Redirect("some aspx web page to jump to")
以上内容不超过上一页

但是,如果使用此选项:

Server.Transfer("some aspx web page to jump to")
然后通过上一页,您就可以使用它了

因此,在下一页的页面加载事件中,您可以按照上面的说明使用“prevouspage”

因此Server.Transfer(“到下一页”)将允许在代码中使用“上一页”

所以你可以选择任何控件,任何值。您甚至可以引用gridview和用户选择的行。实际上,整个上一页已被转移,并可在上述“上一页”中使用。您不能获取viewstate,但如果需要,可以在上一页中设置公共方法以公开viewstate的成员

当然,您必须使用FindControl,但这是上一页

另一种方式(允许使用上一页)

您不会使用代码隐藏触发跳转到新页面(使用Server.Transfer()),但可以在第一个页面的按钮中设置回发URL。这就是回帖URL的用途!!!(将当前页面传递到回发URL)

例如:

   <asp:Button ID="Button1" runat="server" Text="View Hotels"
    PostBackUrl="~/HotelGrid.aspx" />
当然,在按钮中使用回发URL意味着页面跳转不需要代码隐藏存根。同样,使用回发URL将确保上一页可以在下一页中使用

然而,在这种情况下,您不想硬编码URL,或者在导航到下一页之前,按钮代码存根中可能会出现一些附加逻辑?(或者甚至会发生??)

那么ok post back URL就不那么实用了,但是您可以在代码中使用Server.Transfer(),这同样允许使用内置的“前一页”


请记住,无论您需要/想要/将从上一页获取什么,都必须在我们跳转到的页面的第一个页面加载时发生。在第一页加载发生后,该页上的任何附加按钮回发和常规生命周期以及在代码隐藏中使用控件和事件都不会使用上一页。(上一页将为空)。

您是否正在处理一些文本文件,并希望在处理后传递结果?或者您是否认为您将使用文本文件将一些信息从第一页传递到第二页?因为这是一个非常糟糕的想法,毫无意义(如果有10个人在使用该网站——他们会在你写文本文件时互相践踏,然后试图传递到下一页。如果你有一些数据、一些控件、一些复选框、文本框等,那么在第二种形式中传递和使用该信息的方式就有很多——但文本文件根本不是最好的方式。)approach@Albert我使用文本文件将数据发送到第二页。我知道,这是个坏主意……谢谢:)没问题-请参阅我的答案-将上一页和值传递到下一页的功能是asp.net的内置功能。请参阅我的帖子-它解释了此功能的工作原理。感谢您的提示。我尝试了此方法,但在这一行出现错误:HttpWebResponse httpResponse=(HttpWebResponse)HttpWebRequest.GetResponse();如我所见,此命令支持我的框架版本(请注意此处)。但我得到错误:非静态字段、方法或属性“System.Net.WebRequest.GetResponse()”需要对象引用
   <asp:Button ID="Button1" runat="server" Text="View Hotels"
    PostBackUrl="~/HotelGrid.aspx" />
Previous page only works if you use a Server.Transfer("to the page")

Response.Request("to the page") does NOT allow use of previous page.

using the post-back URL of a button (or in fact many other controls) also
have a post-back URL setting - and again if that control has post-back URL, then
again use of previous page is allowed due to that control causing such page
navagation.

The previous page can ONLY be used on the first page load (ispostBack = False).