0

给定一个 url 或一个HttpResponse实例,我需要发回一个状态码为 200 的HttpResponse(注意Response不是Request)。我尝试了一个通用的HttpClient.PostAsyncand 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);
4

2 回答 2

0

当您调用HttpClient调用时,您正在创建HttpRequestMessages。有许多帮助方法(如一些PostAsync重载或PostAsJsonAsync)可让您传入一个普通的旧 C# 对象,然后它会为您包装该对象。这些值在 的Content属性中设置HttpRequestMessage,由 的实例包装HttpContent。您也可以完全自由地自己创建这些请求消息,将状态代码和内容设置为您喜欢的任何内容。 HttpResponseMessage(注意Response,不是Request)是您从客户端调用中返回的类型,您可以使用它来读取返回给您的响应代码或数据(存储在 中HttpResponseMessage.Content,不要与HttpRequestMessage.Content您已经设置的数据混淆) .

也就是说,您可以将请求内容设置为 的实例HttpResponseMessage,但这有点奇怪。通常,您用于内容的对象应该是简单的对象,它们的存在只是为了定义您的请求主体的形状(如 JSON)。

这篇文章很好地介绍了基础知识:Calling a Web API from a .Net Client

于 2013-10-25T21:16:53.313 回答
0

您应该能够直接在 HttpResponse 对象上设置状态 像这样的东西......

HttpResponse().StatusCode = 200;

于 2013-10-25T20:53:52.730 回答