代码之家  ›  专栏  ›  技术社区  ›  user24140580

连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败”

  •  0
  • user24140580  · 技术社区  · 1 年前

    从WCF服务调用API时出错:

    连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机没有响应而建立的连接失败

    WCF使用http协议,API使用https协议。 下面是代码:

    var client = new HttpClient();              
    var data = new Dictionary<string, string>();
    data["client_id"] = "XXXX";
    data["client_secret"] = "XXXX";
    data["grant_type"] = "XXXXX";
    
    using (HttpContent formContent = new FormUrlEncodedContent(data))
    {
        using (HttpResponseMessage response = await client.PostAsync("https://api-cdt.maersk.com/oauth2/access_token", formContent).ConfigureAwait(false))
        {
            response.EnsureSuccessStatusCode();
            var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
            var tokenClient = JsonConvert.DeserializeObject<TokenClient>(json);
            return tokenClient.access_token;
        }
    }
    

    我期望API调用应该得到执行并得到访问令牌。

    0 回复  |  直到 1 年前
        1
  •  0
  •   QI You    1 年前

    原因可能是你需要转换你的 URL字符串 a URI对象 .

    Uri uri = new Uri("https://api-cdt.maersk.com/oauth2/access_token", UriKind.Absolute);
    
    using (HttpResponseMessage response = await client.PostAsync(uri, formContent).ConfigureAwait(false))
        {
            response.EnsureSuccessStatusCode();
            var json = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
            var tokenClient = JsonConvert.DeserializeObject<TokenClient>(json);
            return tokenClient.access_token;
        }
    

    Tip

    推荐文章