Запрос броска Существующее соединение было принудительно закрыто удаленным хостом только по запросу C #

Мне тяжело пытаться использовать услугу REST от Cielo (шлюзовой компании с кредитными / дебетовыми картами). Если я использую почтальон, он работает:

POST /1/sales/ HTTP/1.1
Host: apisandbox.cieloecommerce.cielo.com.br
MerchantKey: my_key
Content-Type: application/json
MerchantId: merc_id
Cache-Control: no-cache
Postman-Token: 6643cc5a-173a-f5db-8924-85ea8b7bbb55

{"MerchantId":"00000000-0000-0000-0000-000000000000","MerchantKey":null,"RequestId":"00000000-0000-0000-0000-000000000000","MerchantOrderId":"1223","Customer":{"Name":"Emerson Fitchy"},"Payment":{"PaymentId":"00000000-0000-0000-0000-000000000000","Type":"CreditCard","Amount":15700,"Installments":1,"Provider":null,"ProofOfSale":null,"Tid":null,"AuthorizationCode":null,"SoftDescriptor":null,"ECI":null,"Status":0,"ReturnCode":null,"ReturnMessage":null,"CreditCard":{"CardNumber":"0000000000000001","Holder":"Emerson Fitchy Santis","ExpirationDate":"12/2022","SecurityCode":"154","Brand":"Visa"}}}

И это код C # (на данный момент я пробовал RestSharpи HttpClientс теми же результатами):

var webrequest = (HttpWebRequest)WebRequest.Create(Constants.Cielo.GetSalesUrl());

webrequest.ContentType = "application/json";
webrequest.Method = "POST";
webrequest.Headers.Add("MerchantId", Constants.Cielo.Sandbox.MerchantId.ToString());
webrequest.Headers.Add("MerchantKey", Constants.Cielo.Sandbox.MerchantKey);

using (var streamWriter = new StreamWriter(webrequest.GetRequestStream()))
{
    var json = JsonConvert.SerializeObject(sale);
    streamWriter.Write(json);
}

var httpResponse = (HttpWebResponse)webrequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
    var result = streamReader.ReadToEnd();
    var x = result;
}

Любые идеи о том, что я делаю неправильно? Я пробовал использовать Fiddler 4, но он не подбирает этот запрос (я не знаю почему), и WireShark выбирает его, но не показывает информацию так, как это делает Fiddler (может быть, это потому, что я использую https?).

Есть идеи?

Благодаря!

РЕДАКТИРОВАТЬ

Ответ / Exception

введите описание изображения здесь

c#,rest,

0

Ответов: 1


0

Попробуйте этот клиент и посмотрите, получится ли у него другой результат:

var client = new HttpClient();

using (HttpRequestMessage request = new HttpRequestMessage())
{
    request.Method = HttpMethod.Post;
    request.RequestUri = new Uri(Constants.Cielo.GetSalesUrl(), UriKind.Absolute);
    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var requestContent = JsonConvert.SerializeObject(sale);
    request.Content = new StringContent(requestContent, Encoding.UTF8, "application/json");

    request.Headers.Add("MerchantId", Constants.Cielo.Sandbox.MerchantId.ToString());
    request.Headers.Add("MerchantKey", Constants.Cielo.Sandbox.MerchantKey);

    using (HttpResponseMessage response = await client.SendAsync(request))
    {
        if (response.IsSuccessStatusCode)
        {
            if (response.Content != null)
            {
                var rawJson = await response.Content.ReadAsStringAsync();
                // do stuff - map to type, etc.
            }
        }

        return something;
    }
}
C #, отдых,
Похожие вопросы