在MVC 6中将HTTP响应传递给客户端

时间:2015-08-10 17:25:47

标签: asp.net-mvc asp.net-core-mvc

我是Web API和HTTP的新手。

我正在使用MVC 6(测试版)。我有一个代理服务(Web API),它有一个POST方法来从另一个返回XML内容的服务获取响应。我需要将响应内容返回给客户端,因为客户端无法直接调用服务。

// In my proxy service
public HttpResponseMessage Post(String content) 
{
    using ( HttpClient client = new HttpClient() ) {

        .......

        HttpResponseMessage response = client.PostAsync(uri, content).Result;

        // I get everything I need in the "response".

        // How to return the response or it body to the client.
        // return response;
    }
}

II需要在没有或最小变化的情况下向客户返回“响应”。我试过“返回响应”,或者创建一个新的HttpResponseMessage,但我只有像

这样的东西
{"Headers":[{"Key":"Content-Type","Value":["text/xml"]}]} 

在体内。

那么有一种简单的方法将响应传递回客户端吗?感谢。

1 个答案:

答案 0 :(得分:3)

ASP.NET团队目前正在开发一个代理中间件"这正是您正在寻找的:Adapter

以下是内部工作原理:

public void  button1_Click(object sender, EventArgs e)
    {
        try
        {
            dataGridView1.DataSource = GetRESTData("http://localhost:55495/EventService.svc/GetAllEvents");
        }
        catch (WebException webex)
        {
            MessageBox.Show("Es gab so ein Schlamassel! ({0})", webex.Message);
        }
    }

    private JArray GetRESTData(string uri)
    {
        var webRequest = (HttpWebRequest)WebRequest.Create(uri);
        var webResponse = (HttpWebResponse)webRequest.GetResponse();
        var reader = new StreamReader(webResponse.GetResponseStream());
        string s = reader.ReadToEnd();
        return JsonConvert.DeserializeObject<JArray>(s);
    }

https://github.com/aspnet/Proxy