2017-02-03 19 views
0

HTTPClientを使用してapi.lob.comに投稿しようとしています。デバッグ中にintellisenseはHTTPRequestMessageに値を表示しますが、タスクhttpresponsemessageの値は何も表示しません。私はRESTSharpを使用して見てきましたが、ストレートのC#を使用することを好むこのポストに基づいてコードclick hereweb apiからの応答がありません

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Net; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Net.Http.Formatting; 

namespace HTTPClientAPICall 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      callAPI(); 

     } 

    static void callAPI() 
    { 
     HttpClient client = new HttpClient(); 

     client.BaseAddress = new Uri("https://api.lob.com"); 

     client.DefaultRequestHeaders 
      .Accept 
      .Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     client.DefaultRequestHeaders.Authorization = new 

AuthenticationHeaderValue("Basic", 
        Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "test_xxxxxxxxxxxxxxxxxxxxxxxxxx", "")))); 

      HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "/v1/verify"); 

      request.Content = new StringContent("{\"address_line1\":\"1600 Pennsylvania Ave NW\",\"address_city\":\"Washington\",\"address_state\":\"DC\",\"address_zip\":\"20500\"}", Encoding.UTF8, "application/json"); 

      client.SendAsync(request).ContinueWith 

       ((responseTask) => 
        { 

         Console.WriteLine("Response: {0}", responseTask.Result); 

        }); 

     } 
    } 
} 

インテリセンス enter image description here

enter image description here

を内蔵

余分な参照なしに。

答えて

0

元のコードでいくつかの間違いをしました。この解決策が働いています。この記事を使用して、究極のソリューションの出発点を特定しました。click here

解決策の鍵はJSON.NETでした。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Net; 
using System.Net.Http; 
using System.Net.Http.Headers; 
using System.Web.Configuration; 
using Newtonsoft.Json; 

namespace JSONandHTTPClient 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      callJSONandHTTPClientApp(); 

     } 

     static void callJSONandHTTPClientApp() 
     { 
      using (var client = new HttpClient()) 
      { 
       var parameters = new Dictionary<string, string>(); 
       parameters["address_line1"] = "1600 Pennsylvania Ave NW"; 
       parameters["address_city"] = "Washington"; 
       parameters["address_state"] = "DC"; 
       parameters["address_zip"] = "20050"; 

       client.BaseAddress = new Uri("https://api.lob.com"); 

       client.DefaultRequestHeaders 
       .Accept 
       .Add(new MediaTypeWithQualityHeaderValue("application/json")); 
       client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", 
         Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "")))); 

       var justJSON = JsonConvert.SerializeObject(parameters).ToString(); 

       var value = new StringContent(justJSON, Encoding.UTF8, "application/json"); 

       var response = client.PostAsync("v1/verify", value).Result; 

       if (response.IsSuccessStatusCode) 
       { 
        dynamic content = JsonConvert.DeserializeObject(
         response.Content.ReadAsStringAsync() 
         .Result); 

        Console.WriteLine(content.ToString()); 
       } 

       Console.ReadLine(); 
      } 

     } 
    } 
}