给定一个 url 或一个
HttpResponse
实例,我需要发回一个 HttpResponse
(注意 Response 不是 Request),状态代码为 200。我尝试过通用 HttpClient.PostAsync
和 GetAsync
,但我无法配置状态代码。
这基本上是订阅远程服务事件的握手。我发送一个请求,从服务器返回一个 OK,现在它希望我用我自己的 OK 回复 OK。
关于如何解决这个问题有什么想法吗?我没有需要回复的传入请求。
var resp = new HttpResponseMessage(HttpStatusCode.OK);
// need to sent this to the url. no content necessary.
这里有一些我不能做的事情:
var client = new HttpClient();
var resp = await client.GetAsync(url);
-------------------
var content = new ByteArrayContent(new byte[0]);
var client = new HttpClient();
var resp = await client.PostAsync(url, content);
当您调用
HttpClient
调用时,您正在创建 HttpRequestMessage
。有许多辅助方法(例如一些 PostAsync
重载或 PostAsJsonAsync
)可以让您传入一个普通的旧 C# 对象,然后它会为您包装该对象。这些值在 Content
的 HttpRequestMessage
属性中设置,由 HttpContent
的实例包装。您还可以完全自由地自己创建这些请求消息,将状态代码和内容设置为您喜欢的任何内容。 HttpResponseMessage
(注意 Response
,而不是 Request
)是您将从客户端调用中返回的类型,您可以使用它来读取发送回给您的响应代码或数据(存储在 HttpResponseMessage.Content
中,而不是与您已经设置的 HttpRequestMessage.Content
混淆)。
也就是说,您可以将请求内容设置为
HttpResponseMessage
的实例,但这会有点奇怪。一般来说,您用于内容的对象应该是简单的对象,它们的存在只是为了定义请求正文的形状(如 JSON)。
本文很好地介绍了基础知识:从 .Net 客户端调用 Web API
您应该能够直接在 HttpResponse 对象上设置状态 像这样的东西...
HttpResponse().StatusCode = 200;