【问题标题】:HttpRequestMessage POSTHttpRequestMessage POST
【发布时间】:2018-10-12 07:45:01
【问题描述】:

我正在尝试通过HttpResponseMessage 发送json“样式化”字符串。

我创建了以下方法,希望成功发送响应消息。

class Foo
{
    /// <summary>
    /// Vendors
    /// </summary>
    public enum Vendor
    {
        [Description("https://someSite.com")]
        FOO = 0x001
    }

    /// <summary>
    /// Send a POST response
    /// </summary>
    /// <param name="vendor"></param>
    /// <param name="data"></param>
    public static async void SendResponseAsync(Vendor vendor, string data)
    {
        Task task = Task.Run(async () =>
        {
            using (var httpClient = new HttpClient())
            using (var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, vendor.EnumDescriptionToString()))
            {
                var json = Newtonsoft.Json.JsonConvert.DeserializeObject(data);
                httpRequestMessage.Content = new StringContent(json.ToString(), Encoding.UTF8, "application/json");
                var result = await httpClient.SendAsync(httpRequestMessage);
                Console.WriteLine(result.ReasonPhrase);
            }
        });
        await task;
    }
}

我用以下来称呼它;

static void Main()
{
    string jsonText = "{\"apikey\": \"someAPIkey\",\"type\": \"ItemRegistered\",   \"order\": \"999999\",   \"item\": \"99999\",    \"datetime\": \"2018-10-12 01:27:11 GMT\"}";
    Foo.SendResponseAsync(Foo.Vendor.FOO, jsonText);
    Console.ReadKey();
}

我收到的错误是 400 现在您可以说那是我的问题,而且您确实是正确的,但是,

我想知道为什么当我使用PostMan 我收到一个错误,说订单号无法识别? json 格式,

所以我知道订单号不正确,但是,为什么它没有显示在我的控制台应用程序中?我的 POSTING 方法是否正确?

【问题讨论】:

    标签: c# post httprequest


    【解决方案1】:

    您应该将序列化的 json 表示形式传递给 StringContent。你json 变量是对象类型,当你调用ToString() 时,它会给你类似类类型的东西。如果您的 data 已经是序列化的 json,则传递它。

    或者,如果你有一个对象,像这样传递它:

    var content = new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json");
    

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 2012-05-26
      • 2017-07-22
      • 2018-01-27
      相关资源
      最近更新 更多