2012-08-07 40 views
0

为了访问供应商资源(外部托管),我有一个URL,它提供一个包含认证凭证的请求。 URL是动态构建的,但我不希望它出现在用户的浏览器中。相反,我想构建URL,使用HttpWebRequest发送请求,获取结果,然后通过AJAX调用将控制器操作的结果返回给浏览器中的用户。需要让用户隐藏一个URL,我可以将HTTP请求的结果作为ActionResult返回吗?

我觉得我已经做到了这一点,我已经知道如何从服务器内部发出HTTP请求,但是我无法确定使用哪种类型的ActionResult。

+0

我在下面你的思路很艰难的时期......在哪里URL建立?客户端或服务器? – dlras2 2012-08-07 21:16:03

+0

URL永远不会暴露给客户端,服务器将使用HttpWebRequest发出请求,并且我希望将响应返回给用户。 – BigOmega 2012-08-07 21:17:23

回答

0

您可以使用隐藏的iframe来创建帖子并检索响应并将其显示给用户。

+1

无论我使用iframe还是AJAX调用,我仍在调用我的Controller Action,它将发出最终请求并返回结果,问题是ActionResult类型用于从Action返回http Web响应? – BigOmega 2012-08-07 21:14:49

1

看来你可以使用正常的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); 
    }); 
+0

哦。这似乎很明显,谢谢Tommy,如果它能解决问题,我会给你这个答案。 – BigOmega 2012-08-07 21:27:01

+0

@Tommy你的意思是'返回Json(...)'? – dlras2 2012-08-08 13:00:47

+0

@DanRasmussen - 是的,谢谢你的收获 – Tommy 2012-08-08 13:03:03

相关问题