2012-05-29 12 views
5

मैं एक Asp.Net WebAPI पोस्ट विधि करने के लिए पोस्ट करने के लिए कोशिश कर रहा हूँ टाइप:Asp.net WebAPI HttpClient जोरदार PostAync

// POST /api/citycode 
public HttpResponseMessage<CityCode> Post(CityCode citycode) 
{ 
    try 
    { 
     Test.SelfTrackingEntities.BusinessLayer.BusinessManagers.CityCodeManager myCityCodeManager = new CityCodeManager(Utility.GetConnectionString()); 
     var id = myCityCodeManager.Create(citycode); 

     var response = new HttpResponseMessage<Test.SelfTrackingEntities.BusinessLayer.BusinessEntities.CityCode>(citycode) { StatusCode = HttpStatusCode.Created }; 
     response.Headers.Location = new Uri(VirtualPathUtility.AppendTrailingSlash(Request.RequestUri.ToString()) + citycode.Name); 
     return response; 
    } 
    catch (Exception e) 
    { 
     var response = new HttpResponseMessage(HttpStatusCode.Conflict); 
     response.Content = new StringContent(e.Message); 
     throw new HttpResponseException(response); 
    } 
} 

ग्राहक कॉल है:

var objectContent = CreateJsonObjectContent(citycode); 
objectContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); 
var requestMessage = new HttpRequestMessage<CityCode>(citycode, jsonMediaType); 
return httpClient.PostAsync(addressSuffix, objectContent).ContinueWith(task => 
{ 
    var responseMessage = task.Result; 
    return responseMessage.Content.ReadAsAsync<CityCode>().ContinueWith(readTask => 
    { 
     return readTask.Result; 
    }); 
}).Unwrap(); 

लेकिन सर्वर प्राप्त कभी नहीं कॉल करें, मैं जेसननेटफॉर्मेटर का उपयोग कर रहा हूं जो निर्मित फॉर्मेटर में नहीं है।

उत्तर

4

क्या आपने HttpClient (http://msdn.microsoft.com/en-us/library/system.net.http.httpclient(v=vs.110).aspx) की कोशिश की है?

यह एमवीसी 4 वेब एपीआई उपभोग करने के लिए एक उत्कृष्ट HTTP क्लाइंट है। इस पर एक नज़र डालें:

 var config = new HttpConfiguration(); 
     config.Routes.MapHttpRoute("default", "api/{controller}/{id}", new { id = RouteParameter.Optional }); 

     var server = new HttpServer(config); 
     var client = new HttpClient(server); 

     dynamic s = new ExpandoObject(); 
     s.comeValue = 1; 

     var d = JsonConvert.SerializeObject(s); 
     var content = new StringContent(d, Encoding.UTF8, "application/json"); 

     var postResult = client.PostAsync("http://localhost:29722/api/whatevercontroller", content).Result; 
संबंधित मुद्दे