Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法对此处映射定位终结点进行异步Post调用_C#_Asynchronous_.net Core_Here Maps Rest - Fatal编程技术网

C# 无法对此处映射定位终结点进行异步Post调用

C# 无法对此处映射定位终结点进行异步Post调用,c#,asynchronous,.net-core,here-maps-rest,C#,Asynchronous,.net Core,Here Maps Rest,当通过Postman和C WebRequest测试调用时,它可以工作,但我无法使用带有PostAsync或PostJsonAsync调用的HttpClient进行同样的测试 错误:不支持的媒体类型,尽管需要并应用了application/json var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders .Accept .Add(new M

当通过Postman和C WebRequest测试调用时,它可以工作,但我无法使用带有PostAsync或PostJsonAsync调用的HttpClient进行同样的测试

错误:不支持的媒体类型,尽管需要并应用了application/json

var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders
                    .Accept
                    .Add(new MediaTypeWithQualityHeaderValue("application/json"));

var content = new StringContent(data, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("https://pos.api.here.com/positioning/v1/locate?app_id={id}&app_code={code}", content);
return response;
状态代码:415,原因短语:“不支持的媒体类型”,版本:1.1, 内容:System.Net.Http.HttpConnection+HttpConnectionResponseContent, 标题:{日期:2019年11月8日星期五13:38:37 GMT服务器:nginx clojure 内容类型:应用程序/json内容长度:114}

网络请求

HttpWebRequest request = HttpWebRequest.Create(url) as HttpWebRequest;
if (!string.IsNullOrEmpty(data))
{
    request.ContentType =  "application/json";
    request.Method =  "POST";

    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
    {
        streamWriter.Write(data);
        streamWriter.Flush();
        streamWriter.Close();
    }
}

using (HttpWebResponse webresponse = request.GetResponse() as HttpWebResponse)
{
    using (StreamReader reader = new StreamReader(webresponse.GetResponseStream()))
    {
        string response = reader.ReadToEnd();
        return response;
    }
}

我看到了两个不同点:

您正在HttpClient代码中设置Accept头,而WebRequest代码中没有设置Accept头。这定义了您接受的数据类型。如果这个API调用没有返回JSON,那么它可能只是说我没有什么要说的。你可以试着删除整行。 HttpClient代码中的内容类型将是application/json;charset=utf-8,而在WebRequest代码中只将其设置为application/json。我不明白为什么字符集会让它窒息,但如果更改1不起作用,您可以尝试直接设置内容类型,看看它是否有任何区别:
你能展示你的WebRequest代码吗?它可能不是等价的。如图所示,谢谢@Gaburtanks Gabriel,就是这样,按照您的建议更改我的代码很有效。
var content = new StringContent("");
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");