C# PostAsJsonAsync返回null

C# PostAsJsonAsync返回null,c#,asp.net,json,asmx,fiddler,C#,Asp.net,Json,Asmx,Fiddler,我目前正在向API发布一个json字符串,以接收包含各种值的对象 这是我发布的json字符串: {"SomeProperty":1,"DimensionOne":4,"DimensionTwo":6,"IdNumber":0} 现在我对Json字符串本身没有任何问题,因为我已经在前往api的Fiddler中测试了这个字符串,它工作得非常好,返回了我需要的所有值 我所做的与Fiddler所做的唯一不同之处在于,我将从脚本转到一个发布到API的Web服务 以下是我用于Web服务的代码: [WebS

我目前正在向API发布一个json字符串,以接收包含各种值的对象

这是我发布的json字符串:

{"SomeProperty":1,"DimensionOne":4,"DimensionTwo":6,"IdNumber":0}
现在我对Json字符串本身没有任何问题,因为我已经在前往api的Fiddler中测试了这个字符串,它工作得非常好,返回了我需要的所有值

我所做的与Fiddler所做的唯一不同之处在于,我将从脚本转到一个发布到API的Web服务

以下是我用于Web服务的代码:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[ScriptService]
public class WebService1 : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public ObjectType Relay(string json)
    {
        const string url = "https://api.com";
        var client = new HttpClient {BaseAddress = new Uri(url)};

        client.DefaultRequestHeaders.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var response = client.PostAsJsonAsync("api/v1/GetObject", json).Result;

        if (response.IsSuccessStatusCode)
        {
            var objectRequest = Task.FromResult(response.Content.ReadAsStringAsync());
            return JsonConvert.DeserializeObject<ObjectType>(objectRequest.Result.Result);
        }

        return null;
    }
}
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[脚本服务]
公共类WebService 1:System.Web.Services.WebService
{
[网络方法]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
公共对象类型中继(字符串json)
{
常量字符串url=”https://api.com";
var client=newhttpclient{BaseAddress=newuri(url)};
client.DefaultRequestHeaders.Clear();
client.DefaultRequestHeaders.Accept.Add(新的MediaTypeWithQualityHeaderValue(“应用程序/json”);
var response=client.PostAsJsonAsync(“api/v1/GetObject”,json).Result;
if(响应。IsSuccessStatusCode)
{
var objectRequest=Task.FromResult(response.Content.ReadAsStringAsync());
返回JsonConvert.DeserializeObject(objectRequest.Result.Result);
}
返回null;
}
}
到目前为止,它只返回null(显然是因为response.issucessStatusCode不是TRUE)

但是当我注释掉if括号并删除返回null时,当我应该接收数据时,它会给我一个空对象。所有输入都正确

我想知道我是否应该使用PostAsJsonAsync以外的方法,或者是否应该对json字符串或json头执行其他操作

同样,json字符串的格式是正确的,因为它与Fiddler一起使用,并且以前直接从网站转到API(没有WebService)时也可以使用


如果有任何建议,我将不胜感激。提前感谢。

您正在发送https请求。虽然客户端证书在协议中是可选的,但是如果服务器需要,您需要为您的HttpClient提供证书。:

您正在发送https请求,您需要为您的HttpClient提供一个证书:查看@khanhclient以感谢您的快速响应response@KhanhTO我建议张贴,作为一个答案b/c它很可能是解决方案。我也想给你一票。答案对你有用吗?@KhanhTO-ah我忘了更新解决方案了。不幸的是,您的解决方案没有修复它,但幸运的是,这不是一个问题。我发送的json对象的Web方法参数是原因。稍后我会更新完整的答案。