Thanks for the reply. This might have been reported via AppCentre i presume there is no issue there , the issue might be related Xamarin , Android and .net api
Java.Net.SocketException: Software caused connection abort
Vuyiswa Maseko
351
Reputation points
Good Day All
i have the following code and it randomly gives an error on Android 11
Java.Net.SocketException: Software caused connection abort
, not all the time , App Centre Reported it twice
public async Task<List<USERS>> Get_All_Customers( )
{
List<USERS> results = null;
try
{
USERS m_model = new USERS
{
USER_ID = 1,
CURRENT_DATETIME = '2021/07/01'
};
var httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var Json = JsonConvert.SerializeObject(m_model, new JsonSerializerSettings
{
ContractResolver = new DefaultContractResolver
{
IgnoreSerializableAttribute = false
}
});
HttpContent httpContent = new StringContent(Json, Encoding.UTF8, "application/json");
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8");
var response = await Task.Run(() => httpClient.PostAsync(string.Format("https://www.myserver.com/api/MainCustomers_OnlineDates/Get_All_Customers"), httpContent));
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
var content = await response.Content.ReadAsStringAsync();
results = JsonConvert.DeserializeObject<List<USERS>>(content);
}
}
catch (Exception ex)
{
await Task.Run(() => Crashes.TrackError(ex));
}
return results;
}
Thanks
2 answers
Sort by: Most helpful
-
-
Vuyiswa Maseko 351 Reputation points
2021-10-05T20:35:31.983+00:00 Thank you , i have made changes to the code .
- Created a Static variable for the httpClient that can be used by other functions like this
static readonly HttpClient httpClient = new HttpClient();
- and have changed the code by removing the recreation of the variable and also removed Task.Run and my function looks like this
public async Task<List<USERS>> Get_All_Customers( ) { List<USERS> results = null; try { USERS m_model = new USERS { USER_ID = 1, CURRENT_DATETIME = '2021/07/01' }; var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var Json = JsonConvert.SerializeObject(m_model, new JsonSerializerSettings { ContractResolver = new DefaultContractResolver { IgnoreSerializableAttribute = false } }); HttpContent httpContent = new StringContent(Json, Encoding.UTF8, "application/json"); httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/json; charset=utf-8"); var response = await httpClient.PostAsync(string.Format("https://www.myserver.com/api/MainCustomers_OnlineDates/Get_All_Customers"), httpContent); if (response.StatusCode == System.Net.HttpStatusCode.OK) { var content = await response.Content.ReadAsStringAsync(); results = JsonConvert.DeserializeObject<List<USERS>>(content); } } catch (Exception ex) { await Task.Run(() => Crashes.TrackError(ex)); } return results; }
you can ignore the date part , just for an example. i will wait and see there is no reports of the same issues
- Created a Static variable for the httpClient that can be used by other functions like this