爲了訪問供應商資源(外部託管),我有一個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