首页 > 解决方案 > HTTPClient Post 返回错误请求 400

问题描述

我撞到了一堵砖墙。请帮忙。我从来没有在我的 svc 文件中遇到任何断点,所以我不知道发生了什么。

我尝试了其他几种解决方案,但没有骰子....

我的 jsonstring 是

string jsonString = "[{\"details\":\"Hello World\"}]";

休息文件.cs:

[OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "updateDataViaPost", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
        ResponseData updateDataViaPost(RequestData rdata);

客户代码:

 using (HttpClient client = new HttpClient())
{
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var request = new StringContent(jsonString, Encoding.UTF8, "application/json");
                var response = client.PostAsync(requestUrl, request).Result;
                var result = response.Content.ReadAsStringAsync();
}

请求数据

public class RequestData
    {
        [DataMember]
        public string details { get; set; }
    }

它现在使它成为这里的函数,但传递给它的 rdata 为空:

public Stream updateDataViaPost(RequestData rdata)
{
            
     var data = rdata.details.Split('|');

    ......

看起来字符串需要是 string jsonString = "[{"details":"Hello World"}]";

标签: c#http

解决方案


谢谢大家的帮助!!!!!!!!!非常感激。

现在为所有这些作品供将来参考:

[DataContract]
    public class UpdateTableData
    {
        [DataMember]
        public string TableName { get; set; }
        [DataMember]
        public string ColumnNames { get; set; }
        [DataMember]
        public string Values { get; set; }
        [DataMember]
        public string WhereColumnNames { get; set; }
        [DataMember]
        public string WhereValues { get; set; }
    }
 public string updateDataViaPost(UpdateTableData rdata)
 {
           ..... (MY UNIQUE CODE)......
}
[OperationContract]
        [WebInvoke(Method = "POST", UriTemplate = "updateDataViaPost", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]

        //ResponseData updateDataViaPost(RequestData rdata);
        string updateDataViaPost(UpdateTableData data);
string jsonString = new JavaScriptSerializer().Serialize(updateTable);
using (HttpClient client = new HttpClient())
            {
                //POST Request

                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                var request = new StringContent(jsonString, Encoding.UTF8, "application/json");
                
                var response = client.PostAsync(URI, request).Result;
                var result = response.Content.ReadAsStringAsync().ConfigureAwait(false).GetAwaiter().GetResult();
                string strresult = result;
            }


推荐阅读