C#读取HTTP POST结果

问题描述:

我有一个MVC控制器,它是把样品GUID字符串转换为HttpResponseMessage下面的代码:C#读取HTTP POST结果

public class CertifyController : Controller 
{ 
    [HttpPost] 
    public async Task<HttpResponseMessage> NewCertifyOfferRequestAsync(string requestString) 
    { 
     string activityId = "30dd879c-ee2f-11db-8314-0800200c9a66"; 

     HttpResponseMessage httpResponseMessage = new HttpResponseMessage(); 
     httpResponseMessage.Content = new StringContent(activityId); 
     return httpResponseMessage; 
    } 

} 

我使用下面的代码调用通过一个控制台应用程序此控制器:

using (HttpClient client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("http://localhost:84928/"); 

    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    string requestString = "df5f5587-f1ef-449a-9d20-7f386ea638a8"; 

    HttpResponseMessage response = await client.PostAsJsonAsync("Certify/NewCertifyOfferRequestAsync", requestString); 
    if (response.IsSuccessStatusCode) 
    { 
     string activityId = await response.Content.ReadAsStringAsync(); 
     Console.WriteLine("Received activity id: " + activityId); 
    } 
} 

我期待在响应中接收activityId“30dd879c-ee2f-11db-8314-0800200c9a66”。但是,activityId正在获取“StatusCode:200,ReasonPhrase:'OK',版本:1.1,内容:System.Net.Http.StringContent,标题:\ r \ n {\ r \ n Content-Type:text/plain; charset = utf-8 \ r \ n}“从ReadAsStringAsync调用。

我应该如何更改activityId的赋值,以便它获取Controller中生成的activityId?

+0

您确保activityId没有得到您的结果与所有其他事情?在此发布整个结果。 – gustavodidomenico

+0

这是您的_actual_ WebAPI代码吗?它看起来像你正在返回一个'HttpResponseMessge'被序列化为完整的字符串。 – CodeCaster

+0

@gustavodidomenico我发布了整个activityId response.Content.ReadAsStringAsync()返回。 – Romonov

如果它是webapi,你应该能够改变你的方法签名来返回一个“字符串”而不是HttpResponseMessage。

public string Get(int id) 
{ 
    return "value"; 
} 

查看详细示例,您可以使用Visual Studio来创建的WebAPI的Web应用程序,并期待在“ValuesController.cs”

+0

我不是创建HttpResponseMessage,而是将post函数的返回类型更改为任务,并直接返回guid(return actvityId)。我可以在调用控制台应用程序中获取activityId。你还可以告诉我应该如何改变我的接收代码来获取activityId,如果我保持HttpResponseMessage的创建原样? – Romonov

+0

我没有尝试过,但我认为如果您强烈地键入它并返回内容类型设置为“application/json”。然后在你的客户端,将内容反序列化为一个对象。你应该得到你想要的。 –