【发布时间】:2015-10-19 19:58:07
【问题描述】:
我在将示例 guid 字符串放入 HttpResponseMessage 的 MVC 控制器中有以下代码:
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?
【问题讨论】:
-
你确定 activityId 没有得到你的结果吗?在此处发布整个结果。
-
这是您的实际 WebAPI 代码吗?看起来您正在返回一个
HttpResponseMessge,它被完整地序列化为字符串。 -
@gustavodidomenico 我发布了整个activityId response.Content.ReadAsStringAsync() 正在返回。
-
@CodeCaster 我发布了我的整个控制器代码。
-
除非您使用的是 MVC 6,否则这就是 MVC 控制器。 WebAPI 控制器继承自 ApiController。
标签: c# httpclient httpresponse asp.net-mvc-controller