Я использую простой HttpClient для POST или GET из Salesfore REST. Я использую токен аутентификации Salesforce для отправки / получения JSON.
. Net Framework 4.5 и 4.6 выдает ошибку, показанную выше. Тот же код прекрасно работает в. Net Core API.
Я также попробовал SecurityProtocol T1c
в моем. net 4.6 решении. Ничего не сработало. В Core я ничего не делал, но тот же код работает отлично.
Пожалуйста, найдите код PostAsyn c. Может кто-нибудь, пожалуйста, помогите.
Я проверил конечную точку Salesforce в Workbench, и я могу ПОСТАВИТЬ JSON и получить результаты.
public static async Task<string> PostAsync<TRequest, TResponse>(string url, dynamic requestBodyObject, string method, string accesstoken)
{
try
{
//client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
dynamic result = new object();
switch (method)
{
case "POST":
//result = await client.PostAsync(url, contentPost);
using (HttpClient client = new HttpClient())
{
client.BaseAddress = new Uri(url);
HttpContent contentPost = new StringContent(JsonConvert.SerializeObject(requestBodyObject), Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Authorization", "Bearer " + accesstoken);
using (HttpResponseMessage response = await client.PostAsync(string.Format(url), contentPost).ContinueWith((postTask) => postTask.Result.EnsureSuccessStatusCode()))
{
if (response.IsSuccessStatusCode)
{
using (HttpContent content = response.Content)
{
string myContent = await content.ReadAsStringAsync();
HttpContentHeaders headers = content.Headers;
JObject jobj = JObject.Parse(myContent);
JArray arr = (JArray)jobj["searchRecords"];
//IList<Account> accounts = arr.ToObject<List<Account>>();
result = JsonConvert.SerializeObject(arr);
}
}
else { Console.WriteLine("This is doing my head in!!!!!!!!!!"); }
}
}
break;
case "GET":
break;
}
return result;
}
catch (HttpRequestException ex)
{
throw;
}
}