What is the error? Is there anyway you can provide the code?
Hello,
nothing works.
I have checked all the recommendations.
https://stackoverflow.com/questions/54089849/httpclient-getasync-the-underlying-connection-was-closed-an-unexpected-error-o
Do you have another tip for me, please?
Here my code.
WinFoms App C#
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WebClientREST
{
public partial class Form1 : Form
{
public Form1()
{
//System.Net.ServicePointManager.SecurityProtocol |=
// SecurityProtocolType.Tls13 |
// SecurityProtocolType.Tls12 |
// SecurityProtocolType.Tls11 |
// SecurityProtocolType.Tls;
InitializeComponent();
}
public class ResponseStandard
{
[JsonProperty("status")]
public int Status { get; set; }
[JsonProperty("error")]
public int Error { get; set; }
[JsonProperty("msg")]
public string Msg { get; set; }
}
private async void btnTestREST_Click(object sender, EventArgs e)
{
ResponseStandard p = new ResponseStandard()
{
Status = 4,
Error = 4,
Msg = "F",
};
try
{
System.Net.ServicePointManager.SecurityProtocol |=
SecurityProtocolType.Tls13 |
SecurityProtocolType.Tls12 |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls;
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("https://localhost:55892/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
string authorization = $"{""}:{""}";
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", "");
//GET Method
HttpResponseMessage response = await client.GetAsync("api/valuesGET");
if (response.IsSuccessStatusCode)
{
List<ResponseStandard> requestWorkorder = null;
requestWorkorder = await response.Content.ReadAsAsync<List<ResponseStandard>>();
Console.WriteLine("Id:{0}\tName:{1}", requestWorkorder[0].Status, requestWorkorder[0].Error);
}
//POST Method
HttpResponseMessage response1 = await client.PostAsJsonAsync("api/valuesPOST", p);
if (response1.IsSuccessStatusCode)
{
Console.WriteLine("Success");
}
else
{
Console.WriteLine("Internal server Error");
}
}
}
catch (HttpRequestException eww)
{
MessageBox.Show(eww.InnerException.Message);
MessageBox.Show(eww.Message);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}


Server
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace WebRESTServer.Controllers
{
public class ResponseStandard
{
[JsonProperty("status")]
public int Status { get; set; }
[JsonProperty("error")]
public int Error { get; set; }
[JsonProperty("msg")]
public string Msg { get; set; }
}
public class Product
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("price")]
public double Price { get; set; }
[JsonProperty("quantity")]
public int Quantity { get; set; }
}
public class ValuesGETController : ApiController
{
List<Product> ListProduct = new List<Product>();
ResponseStandard[] requestWorkorders = new ResponseStandard[]
{
new ResponseStandard { Status = 1, Error = 1, Msg="a" },
new ResponseStandard{Status = 2, Error=2,Msg= "b" },
new ResponseStandard{ Status = 3, Error=3,Msg= "c" }
};
public IEnumerable<ResponseStandard> GetAllProducts()
{
return requestWorkorders;
}
public IHttpActionResult GetProduct(int status)
{
var product = requestWorkorders.FirstOrDefault((p) => p.Status == status);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
public class ValuesPOSTController : ApiController
{
public IHttpActionResult Post([FromBody] ResponseStandard requestWorkorder)
{
List<ResponseStandard> requestWorkorders = new List<ResponseStandard>();
requestWorkorders.Add(requestWorkorder);
return Ok();
}
}
}

