让 WebAPI 控制器向另一个 REST 服务发送 http 请求
Have a WebAPI Controller send an http request to another REST service
我正在创建 WebAPI 服务,我希望它将所有传入请求 (GET,POST) 重定向到外部 REST 服务并 return 响应 (Json/html)对我的 WebAPI 的原始请求。
执行此操作的最佳方法是什么? HttpResponseMessage 或 HttpWebResponse
[HttpGet]
[Route("api/Geocoder")]
public HttpWebResponse GetCandidates(string query)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://externalRestService.com/arcgis/rest/services/Geocode" + query);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return response;
}
我也试过了
[HttpGet]
public HttpResponseMessage Get()
{
try
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(""https://externalRestService.com/arcgis/rest/services/Geocode")
};
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
response = httpClient.GetAsync(requestUrl).Result;
return response;
}
catch
{
return new HttpResponseMessage()
{
StatusCode = HttpStatusCode.InternalServerError,
ReasonPhrase = "Internal Server Error"
};
}
}
在此先感谢您的帮助。我是 .Net Core 和 webapis 的新手
以下方法对我有用。
public async Task<IHttpActionResult> GET(string query)
{
string _apiUrl = "http://foo.com/rest/services/Geocode?";
string _baseAddress = "http://foo.com/rest/services/Geocode?";
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var responseMessage = await client.GetAsync(_apiUrl + query);
if (responseMessage.IsSuccessStatusCode)
{
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = responseMessage.Content;
return ResponseMessage(response);
}
}
return NotFound();
}
我正在创建 WebAPI 服务,我希望它将所有传入请求 (GET,POST) 重定向到外部 REST 服务并 return 响应 (Json/html)对我的 WebAPI 的原始请求。
执行此操作的最佳方法是什么? HttpResponseMessage 或 HttpWebResponse
[HttpGet]
[Route("api/Geocoder")]
public HttpWebResponse GetCandidates(string query)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://externalRestService.com/arcgis/rest/services/Geocode" + query);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
return response;
}
我也试过了
[HttpGet]
public HttpResponseMessage Get()
{
try
{
HttpClient httpClient = new HttpClient()
{
BaseAddress = new Uri(""https://externalRestService.com/arcgis/rest/services/Geocode")
};
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
response = httpClient.GetAsync(requestUrl).Result;
return response;
}
catch
{
return new HttpResponseMessage()
{
StatusCode = HttpStatusCode.InternalServerError,
ReasonPhrase = "Internal Server Error"
};
}
}
在此先感谢您的帮助。我是 .Net Core 和 webapis 的新手
以下方法对我有用。
public async Task<IHttpActionResult> GET(string query)
{
string _apiUrl = "http://foo.com/rest/services/Geocode?";
string _baseAddress = "http://foo.com/rest/services/Geocode?";
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var responseMessage = await client.GetAsync(_apiUrl + query);
if (responseMessage.IsSuccessStatusCode)
{
var response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = responseMessage.Content;
return ResponseMessage(response);
}
}
return NotFound();
}