Как исправить 400 неверных запросов моего вызова через веб-интерфейс API в моем приложении службы Windows - PullRequest
0 голосов
/ 13 декабря 2018

Я создал автоматический планировщик, в котором данные пересылаются на мой сервер AWS.Я создал Window Service, который запускается каждую минуту для пересылки новых данных.У меня есть существующий API, который получил данные в AWS Server.

Window Service отлично работает с API на сетевом сервере

API Address1: http: \\ 192.168.0.1 \ api \data \ getdata (работает в сети 100%)

API Address2: https: \\ api.mydomain.com \ api \ data \ getdata (протестировано в winform и почтальоне, работающем на 100%)

Но возникла проблема, когда оконные службы отправляют данные на адрес API 2

Вот код

public static void SendData()
{
    var PostData = new Profile
    {
        ID = 99,
        Code = "123",
        Email = 'xyz@yahoo.com'
    };

    try
    {

        var PostBody = JsonConvert.SerializeObject(PostData);
        var PostContent = new StringContent(PostBody, Encoding.UTF8, "application/json");

        //BaseAddress = "https:\\api.mydomain.com";

        using (var Client = API_Client.GetClient("api/data/getdata"))
        {
            var Sending = Client.PostAsync(Client.BaseAddress.ToString(), PostContent);

            Sending.Wait();

            var Response = Sending.Result;

            if (Response.IsSuccessStatusCode)
            {
                Logger.WriteLine("Sending Info to API '" + PostData.ID.ToString() + "'", "Success");
            }
            else
            {
                Logger.WriteLine("Sending Info to API '" + PostData.ID.ToString() + "'", Response.ReasonPhrase);
            }
        }

    }
    catch (Exception ex)
    {
        Logger.WriteLine("Error '" + PostData.ID.ToString()  + "' To Server", ex.Message);
    }
}

Вот сообщение об ошибке

{StatusCode: 400, ReasonPhrase: 'Bad Request', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Pragma: no-cache
  Connection: close
  Cache-Control: no-cache
  Date: Thu, 13 Dec 2018 06:40:34 GMT
  Server: Microsoft-IIS/8.5
  X-AspNet-Version: 4.0.30319
  X-Powered-By: ASP.NET
  Content-Length: 41
  Content-Type: application/json; charset=utf-8
  Expires: -1
}}

Клиент APIПомощник

public class API_Client
{

    protected static string API_BASE_ADDRESS = "https:\\api.mydomain.com\";

    public static HttpClient GetClient(string URL_Target)
    {

        var Client = new HttpClient()
        {
            BaseAddress = new Uri(API_BASE_ADDRESS + URL_Target),
            Timeout = new TimeSpan(0, 0, 90)
        };

        Client.DefaultRequestHeaders.Accept.Clear();
        Client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
        Client.DefaultRequestHeaders.ConnectionClose = true;

        return Client;
    }

}

Почтальон enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...