将响应作为字符串c#.net获取

时间:2012-08-30 05:41:59

标签: c# .net httpwebrequest rest-client

我在页面加载事件中使用c#.net创建了网站

protected void Page_Load(object sender, EventArgs e)
    {

        string s = "completed.";
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);

        Response.OutputStream.Write(bytes, 0, bytes.Length);
    }

当我在浏览器中运行时,我得到了正确的响应

Completed.

现在我的问题是当我通过休息客户端运行相同的url时,我得到的响应nody [raw]为

completed.

<!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><title>

</title></head>

<body>
    <form method="post" action="Default.aspx" id="form1">

<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZJy1PJCY5kS9nkQAfBTgrw0zeG/yMEs2VJP+7kbHC2Yp" />
</div>    <div> </div>    </form></body></html>

但我需要完成。作为回应

怎么可能?

等待您的宝贵意见和建议

3 个答案:

答案 0 :(得分:3)

尝试使用:

Response.Clear();
Response.OutputStream.Write(bytes, 0, bytes.Length); 
Response.End(); 

答案 1 :(得分:1)

尝试清除回复。

protected void Page_Load(object sender, EventArgs e)
    {

        string s = "completed.";
        byte[] bytes = System.Text.Encoding.UTF8.GetBytes(s);

        Response.Clear();
        Response.OutputStream.Write(bytes, 0, bytes.Length);
    }

如果这样做无效,请使用方法OnRender。在Page_Load之后的页面生命周期中有一些方法,我认为OutputStream也在那里被修改。

答案 2 :(得分:1)

在page_load中输出到响应流将导致输出的任何内容成为响应中的第一个内容。

这就是为什么你在其他版本的响应中看到“已完成”的原因。

我几乎可以保证你也会在浏览器版本中得到这个,但浏览器试图屏蔽你,你试过在html上查看源代码吗?

我觉得清除响应可能没有帮助,因为当页面点击其on_prerender事件时,它将呈现所有表单控件/母版页等,并且它会将该块添加到页面中。

你是否考虑过使用mvc / webapi来实现你所看到的更轻量级版本。