5

「/xController/xMethod」のような「URL アドレス」を取得し、HttpClient によって別の Web アプリケーションから結果を取得して結果を表示する単純なプロキシ アプリケーションを作成しています。

私の方法:

public ActionResult Index(string urlAddress)
{
   var data = "";
   if (Request.ContentLength > 0 && httpRequestMessage != null)
       data = httpRequestMessage.Content.ReadAsStringAsync().Result;

    using (var client = new HttpClient())
    {
      // fill header and set target site url 

      // Make Post Data
      var buffer = System.Text.Encoding.UTF8.GetBytes(data);
      var byteContent = new ByteArrayContent(buffer);
      if (!String.IsNullOrWhiteSpace(Request.ContentType) && !String.IsNullOrEmpty(Request.ContentType))
           byteContent.Headers.ContentType = new MediaTypeWithQualityHeaderValue(Request.ContentType);

       // make query string ....

       // sending request to target site         
       HttpResponseMessage response = null;
       if (Request.HttpMethod.ToUpper() == "POST")
             response = client.PostAsync(urlAddress + queryString, byteContent).Result;
       else
             response = client.GetAsync(any + queryString).Result;

    // My Problem is in here....
    return ....;              
  }
}

リクエストをブラウザに表示したいのですが、レスポンスがファイルの場合はブラウザがコンテンツをダウンロードし、レスポンスがJsonの場合はJsonとして表示します。

(たとえば) HTML をいつ表示したいかはわかっています。私は使っている :

ActionResult x = new ContentResult()
                {
                    Content = response.Content.ReadAsStringAsync().Result,
                    ContentType = response.Content.Headers.ContentType.MediaType
                };
                return x;

または、 JsonActionResult を使用して html として、または FileContentResult を使用して File に戻りたいが、HttpResponseMessage を Best ActionResult クラスに変換するための高速で信頼性の高いソリューションが必要な場合

4

1 に答える 1