C# 如何从Web请求发送HTML文本响应?
我有一个在WindowsCE上运行的桌面应用程序,带有嵌入式浏览器控件(我相信是IE4)。Windows CE的指令集有限。它的.NET Compact Framework 3.5仅限于HttpWebRequest 对于这个设备,我正在向我们的web服务器进行查询 当我们将产品信息发送到web服务器时,我们希望它用一个包含信息的非常基本的HTML页面进行响应 在Windows CE设备上,我运行以下代码:C# 如何从Web请求发送HTML文本响应?,c#,html,asp.net,C#,Html,Asp.net,我有一个在WindowsCE上运行的桌面应用程序,带有嵌入式浏览器控件(我相信是IE4)。Windows CE的指令集有限。它的.NET Compact Framework 3.5仅限于HttpWebRequest 对于这个设备,我正在向我们的web服务器进行查询 当我们将产品信息发送到web服务器时,我们希望它用一个包含信息的非常基本的HTML页面进行响应 在Windows CE设备上,我运行以下代码: private const string _URL = "http://192.168.2
private const string _URL = "http://192.168.2.202/query.aspx";
public string QueryProduct(string productID)
{
var preReq = (HttpWebRequest)WebRequest.Create(_URL);
preReq.Credentials = CredentialCache.DefaultCredentials;
preReq.PreAuthenticate = true;
preReq.UserAgent = "WindowsCE Client";
preReq.Method = "HEAD";
preReq.Timeout = 10000;
using (var response = (HttpWebResponse)preReq.GetResponse())
{
response.Close(); // seems a bit pointless
}
var request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultCredentials;
request.PreAuthenticate = true;
request.UserAgent = "WindowsCE Client";
request.Method = "POST";
request.Timeout = 10000;
request.ContentType = "application/x-www-form-urlencoded";
var postData = String.Format("id=1&product={1}", productID);
var data = Encoding.UTF8.GetBytes(postData);
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
data = null;
using (var response = (HttpWebResponse)request.GetResponse())
{
return new StreamReader(response.GetResponseStream()).ReadToEnd();
}
}
这一部分似乎工作得很好,但它就在那里,以防有什么不对劲
现在,我的ASP.NET文件query.aspx是一个简单的单页文件(即没有代码隐藏):
产品查询
无效页面加载(对象发送方,事件参数e)
{
var authID=Request.QueryString[“id”];
var product=Request.QueryString[“product”];
txtAuthenticationID.Text=authID;
txtProduct.Text=产品;
如果(!String.IsNullOrEmpty(authID)&&
!String.IsNullOrEmpty(产品))
{
搜索\单击(发件人,e);
}
}
无效搜索\u单击(对象发送者,事件参数e)
{
var authID=txtAuthenticationID.Text.Trim();
var product=txtProduct.Text.Trim();
如果(!String.IsNullOrEmpty(authID)&&
!String.IsNullOrEmpty(产品))
{
var htm=String.Format(
“测试产品:{0}文件结束”,产品);
Response.Write(htm);
Response.End();
}
}
身份验证ID:
产品:
这里的想法是仅当authID和product这两(2)个值存在时才返回格式化的HTML文本,否则将显示一个表单,允许用户在提供的表单中指定这些值
如果我删除行Response.End()代码>,我将格式化字符串和下面的HTML表单放在顶部
如果我包括行Response.End()代码>,我只得到空白表单-就像没有任何东西沿着查询字符串输入。< /P>
我需要做什么才能让它工作?呃。。。坚持今天早上似乎工作得很好。{混乱}这里也混乱。首先,我想知道如果不发送&btnSearch=Search来模拟按钮单击,它如何响应格式化的html。它不应引发按钮单击事件!你自己在叫它!:)我的Windows CE设备具有条形码阅读器。有人扫描条形码,然后我的C#代码调用HttpWebRequest——将条形码文本作为变量product
传递给它。不是最好的名字选择,但它仍在开发中。@OguzOzgul-忘记在上面的评论中标记你了。
<%@ Page Language="C#" %>
<html >
<head>
<title>Product Query</title>
<script runat="server">
void Page_Load(object sender, EventArgs e)
{
var authID = Request.QueryString["id"];
var product = Request.QueryString["product"];
txtAuthenticationID.Text = authID;
txtProduct.Text = product;
if (!String.IsNullOrEmpty(authID) &&
!String.IsNullOrEmpty(product))
{
Search_Click(sender, e);
}
}
void Search_Click(Object sender, EventArgs e)
{
var authID = txtAuthenticationID.Text.Trim();
var product = txtProduct.Text.Trim();
if (!String.IsNullOrEmpty(authID) &&
!String.IsNullOrEmpty(product))
{
var htm = String.Format(
"<html><head><title>TEST</title></head><body><p>Product: {0}</p><p>End of File</p></body></html>", product);
Response.Write(htm);
Response.End();
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<div>Authentication ID: <asp:TextBox ID="txtAuthenticationID" runat="server"></asp:TextBox></div>
<div>Product: <asp:TextBox ID="txtProduct" runat="server"></asp:TextBox></div>
<div><asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="Search_Click" /></div>
</div>
</form>
</body>
</html>