2016-07-25 3 views
1

У меня есть веб-API, что я могу успешно получить доступ через браузер: -C в WebAPI с помощью программы консоли

https://127.0.0.1:8443/ncrApi

Я пытаюсь создать простую консольную программу в C# с помощью VS2015 для отправлять данные и получать ответ с помощью http POST.

Вот то, что я до сих пор: -

using System; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Threading.Tasks; 

namespace WebSample 
{ 

    class ApiSendData 
    { 
     public string ApiFunction { get; set; } 
     public string DppName { get; set; } 
     public string ClearData { get; set; } 
     public string DppVersion { get; set; } 
    } 



    class Program 
    { 
     static void Main(string[] args) 
     { 
      // The Main function calls an async method named RunAsync 
      // and then blocks until RunAsyncc completes. 
      RunAsync().Wait(); 
     } 

     static async Task RunAsync() 
     { 
      using (var client = new HttpClient()) 
      { 
       // This code sets the base URI for HTTP requests, 
       // and sets the Accept header to "application/json", 
       // which tells the server to send data in JSON format. 
       client.BaseAddress = new Uri("https://localhost:8443/ncrApi"); 
       client.DefaultRequestHeaders.Accept.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 


       // HTTP POST 
       var datatobeSent = new ApiSendData() 
            { 
             ApiFunction ="NcrSecureData", 
             DppName ="CSampleCustomer", 
             DppVersion ="Latest", 
             ClearData ="1234567890" 
            }; 

       HttpResponseMessage response = await client.PostAsJsonAsync("ncrApi", datatobeSent); 

       if (response.IsSuccessStatusCode) 
       { 
        // Get the URI of the created resource. 
        Uri ncrUrl = response.Headers.Location; 

        // do whatever you need to do here with the returned data // 


       } 
      } 
     } 
    } 
} 

Однако я получаю сообщение об ошибке на ответном заявлении HttpResonseMessage .... { «Произошла ошибка при отправке запроса.»} { » Запрос был прерван: не удалось создать безопасный канал SSL/TLS. "}

Я подозреваю, что это связано с тем, что я неправильно понимаю клиентский запрос.BaseAddress и HttpResponseMessage.

Вот что я следующее: - http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client

+0

Дополнительные комментарии: 1) Я отключил SSL и успешно подключился к веб-интерфейсу api на порту 8080. 2) Я успешно подключился к другим SSL-ави с моим кодом. Кажется, что код C# не подключается к ncrApi при подключении SSL. – Philo

ответ

1

Вы, вероятно, получить ошибку, потому что конечный адрес Ваш BaseAddress + почтовый адрес, то есть: http://localhost:8443/nrcApi/nrcApi, что не существует

Попробуйте изменить client.BaseAddress к:

client.BaseAddress = new Uri("https://localhost:8443/"); 

для ошибки соединения SSL, попробуйте генерировать сертификат доверенного: Make https call using httpclient

+0

спасибо. Я пробовал эту и ту же ошибку. Однако на этот раз я отключил SSL. и просто подключился к localhost: 8080/ncrapi, и это сработало. Я попытался подключиться к другим SSL api, и моя программа успешно соединяется с ними – Philo

+0

и правильно ли вы настроили конечную точку ncrapi для приема входящих SSL-соединений на порт 8443? Это может быть проблема с сервером, связанная с вашей конечной точкой. – Forlani

+0

похоже на то, что мне также .. как проверить мои конфигурации конечных точек ... – Philo

Смежные вопросы