我有以下方法从远程服务器读取响应
public string GetResponse()
{
string url = "http://remoteserver.com/getdata.jsp?id=515";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
Encoding enc = System.Text.Encoding.GetEncoding(1252);
StreamReader loResponseStream = new
StreamReader(response.GetResponseStream(), enc);
string ServerResponse = loResponseStream.ReadToEnd();
loResponseStream.Close();
response.Close();
return ServerResponse;
}
在我的actionresult
我称这个方法如下
public ActionResult Index()
{
string resp= GetResponse();
return View();
}
现在,而不是向我显示浏览器,提示我保存文件。如何避免这种情况并将视图显示为正常
答案 0 :(得分:0)
您可以使用自定义操作结果
public class TextActionResult : ActionResult
{
readonly string _response;
public TextActionResult() { }
public TextActionResult(string response)
{
_response = response;
}
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.Clear();
context.HttpContext.Response.ContentType = "text/html"; //text/plain?
context.HttpContext.Response.Write(_response);
//you may want further tweaks here
}
}
和您的控制器
public TextActionResult Index()
{
string resp= GetResponse();
return new TextActionResult (resp);
}
ps - 看一下使用WebClient,例如
string url = "http://remoteserver.com/getdata.jsp?id=515";
using (var client = new WebClient())
{
client.Encoding = System.Text.Encoding.GetEncoding(1252);
var result = client.DownloadString(url);
}
return result;
答案 1 :(得分:0)
试试这个
public ActionResult Index()
{
string resp= GetResponse();
return Content(resp);
}