主体为的HttpClient获取请求有错误C#

主体为的HttpClient获取请求有错误C#,c#,api,httpclient,C#,Api,Httpclient,我做了很多研究,很多人都提到不可能通过一个机构获得请求。我设法通过邮递员得到了回复。现在我想写我的代码,但我不知道怎么做。我需要得到回应,但为了这个url的工作,我需要包括身体。有人知道如何使用C代码来包含身体吗 这是我当前的代码,但有一个错误->System.PlatformNotSupportedException:“WinHttpHandler仅在Windows上的.NET Framework和.NET Core运行时上受支持。Windows应用商店应用程序(UWP)或Unix平台不支持它

我做了很多研究,很多人都提到不可能通过一个机构获得请求。我设法通过邮递员得到了回复。现在我想写我的代码,但我不知道怎么做。我需要得到回应,但为了这个url的工作,我需要包括身体。有人知道如何使用C代码来包含身体吗

这是我当前的代码,但有一个错误->
System.PlatformNotSupportedException:“WinHttpHandler仅在Windows上的.NET Framework和.NET Core运行时上受支持。Windows应用商店应用程序(UWP)或Unix平台不支持它。“

 var handler = new WinHttpHandler();
        var client = new HttpClient(handler);

        var request = new HttpRequestMessage
        {
            Method = HttpMethod.Get,
            RequestUri = new Uri("my url"),
            Content = new StringContent("my json body content", Encoding.UTF8, "application/json"),
        };

        var response = await client.SendAsync(request).ConfigureAwait(false);
        response.EnsureSuccessStatusCode();
        var responsebody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
        string text = responsebody.ToString();
        string[] str = text.Split(new[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries);
        string result = str[10];
        labelTxt.Text = result;

您在代码中使用的是Windows特定的
WinHttpHandler
类型,您不需要这样做,因为您没有自定义它,这就是导致异常的原因

如果您将代码更改为以下内容,则它应适用于.NET Core上的任何平台:

var client = new HttpClient(); // Changed to use the default HttpClient constructor

var request = new HttpRequestMessage
{
    Method = HttpMethod.Get,
    RequestUri = new Uri("my url"),
    Content = new StringContent("my json body content", Encoding.UTF8, "application/json"),
};

var response = await client.SendAsync(request).ConfigureAwait(false);
response.EnsureSuccessStatusCode();
var responsebody = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
string text = responsebody.ToString();
string[] str = text.Split(new[] { ',', ':' }, StringSplitOptions.RemoveEmptyEntries);
string result = str[10];
labelTxt.Text = result;

只需将代码更改为
var-client=new-HttpClient()-如果您没有自定义
WinHttpHandler
,那么如果您使用HttpClient的默认构造函数,它将为您的平台选择合适的内部处理程序。使用HttpClient您可能应该使用
HttpClientHandler
而不是特定于Windows的
WinHttpHandler
。尽管您似乎没有对处理程序进行任何操作,但只要使用@MartinCostello建议的
new-HttpClient()
,这通常是个坏主意。它“起作用”,但对GET请求的主体赋予任何意义都是违反HTTP规范的@你好!在将我的代码更改为您提到的代码后,它起了作用。谢谢:)您好,这段代码在检索数据时确实有效,但我有另一个错误-->
Android.Util.AndroidRuntimeException:“只有创建视图层次结构的原始线程才能接触其视图。”
。你知道如何解决这个问题吗?对不起,恐怕我帮不了你。我不熟悉Android/Xamarin的开发。我猜这与WinForms应用程序类似,后台线程无法更新主UI线程。在这些情况下,您必须将后台线程中的数据提供给主UI线程,然后它会更新UI元素本身。