为了访问供应商资源(外部托管),我有一个URL,它提供一个包含认证凭证的请求。 URL是动态构建的,但我不希望它出现在用户的浏览器中。相反,我想构建URL,使用HttpWebRequest发送请求,获取结果,然后通过AJAX调用将控制器操作的结果返回给浏览器中的用户。需要让用户隐藏一个URL,我可以将HTTP请求的结果作为ActionResult返回吗?
我觉得我已经做到了这一点,我已经知道如何从服务器内部发出HTTP请求,但是我无法确定使用哪种类型的ActionResult。
为了访问供应商资源(外部托管),我有一个URL,它提供一个包含认证凭证的请求。 URL是动态构建的,但我不希望它出现在用户的浏览器中。相反,我想构建URL,使用HttpWebRequest发送请求,获取结果,然后通过AJAX调用将控制器操作的结果返回给浏览器中的用户。需要让用户隐藏一个URL,我可以将HTTP请求的结果作为ActionResult返回吗?
我觉得我已经做到了这一点,我已经知道如何从服务器内部发出HTTP请求,但是我无法确定使用哪种类型的ActionResult。
您可以使用隐藏的iframe来创建帖子并检索响应并将其显示给用户。
无论我使用iframe还是AJAX调用,我仍在调用我的Controller Action,它将发出最终请求并返回结果,问题是ActionResult类型用于从Action返回http Web响应? – BigOmega 2012-08-07 21:14:49
看来你可以使用正常的ActionResult来处理这个问题。如果我理解你的问题,工作流会沿着这些路线的东西...
视图模型
public ResponseModel(){
public string response {get;set;}
}
控制器
public ActionResult GetOutsideResults(){
//make HttpWebRequest
var model = new ResponseModel();
model.response = ResultsFromWebRequest();
return View(model);
}
查看
@Html.Raw(model.response);
您也可以使用Ajax请求和局部视图做同样的事情。这将保留服务器上的凭据并提供返回HTML结果的方法。我想你也可以使用JSON结果,并使用JQuery进行解析。
控制器
public JsonResult GetOutsideResults(){
//make HttpWebRequest
return Json(ResultsFromWebRequest());
}
查看
$ajax({...
success: function(data){
$("#targetDiv").html(data);
});
我在下面你的思路很艰难的时期......在哪里URL建立?客户端或服务器? – dlras2 2012-08-07 21:16:03
URL永远不会暴露给客户端,服务器将使用HttpWebRequest发出请求,并且我希望将响应返回给用户。 – BigOmega 2012-08-07 21:17:23