2016-08-15 8 views
0

Чтобы отправить данные как запрос в методе PostAsync, я использую следующий подход. но я получаю Inernal Server Error.Отправить httpcontent с PostAsync дает внутреннюю ошибку сервера

HttpResponseMessage response; 
string stringContent = "{ 'request_key': 'ABCD1234', 'request_code': 'CODE', 'request_type':'ID_type' }"; 
using(var client = new HttpClient()) { 

       client.BaseAddress = new Uri(SubscriptionUtility.GetConfiguration("BaseURI")); 
       client.DefaultRequestHeaders.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SubscriptionUtility.GetConfiguration("ContentType"))); 
       client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", SubscriptionUtility.GetConfiguration("BasicAuthentication")); 

       response = await client.PostAsync(SubscriptionUtility.GetConfiguration("SubscriptionAPI"), stringContent, new JsonMediaTypeFormatter()); 
       if(response.IsSuccessStatusCode) { 

        var dataObjects = JsonConvert.DeserializeObject<List<TestClass>>(response.Content.ReadAsStringAsync().Result); 
        //foreach(var d in dataObjects) { 

        //} 
       } 
      } 

Но когда я отправляю запрос через скрипач, он работает отлично. Вот мой запрос стельки

User-Agent: Скрипач

Content-Type: применение/JSON; кодировка = UTF-8

Хост: testapi.com

Content-Length: 93

Авторизация: Основные 12fbe6e1f63d832aa33232323

Сообщение данных: { "request_key": "abcd1234" , "request_code": "CODE", "request_type": "ID_type" }

+0

и что след, когда не используется скрипача? –

+0

Основная авторизация fyi будет Авторизация: Basic 12fbe6e1f63d832aa33232323, а не токен –

ответ

0

я достиг функциональности желания, используя следующий подход Post Request

using(var client = new HttpClient()) { 


       client.BaseAddress = new Uri(SubscriptionUtility.GetConfiguration("BaseURI")); 
       client.DefaultRequestHeaders.Clear(); 
       client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(SubscriptionUtility.GetConfiguration("ContentType"))); 
       client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", SubscriptionUtility.GetConfiguration("BasicAuthentication")); 
       var values = new Dictionary<string, string> 
        { 
         { "request_key", "ABCD1234" }, 
         { "request_code", "CODE" }, 
         { "request_type", "ID_type" } 
        }; 

       var content = new FormUrlEncodedContent(values); 

       var response = await client.PostAsync(SubscriptionUtility.GetConfiguration("SubscriptionAPI"), content); 
       var responseString = await response.Content.ReadAsStringAsync(); 
Смежные вопросы