2012-08-07 26 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

相關問題