2016-08-02 13 views
0

Ich verwende HttpClient, um ein .NET-Projekt mit meiner Web-API zu verbinden.HttpClient Übergeben Mehrere Objekte/Variablen zu [HttpPost] Web API m

Ich wollte wissen, wie mehrere Parameter an die Webapi-Methode in der PostAsJsonAsync() -Methode zu senden.

Client-Controller:

callbackUrl = Url.HttpRouteUrl("DefaultApiAction", new { controller = "Employee", action = "UpdateToleranceRangeByEmployeeId" }); 
responseMessage = await client.PostAsJsonAsync(callbackUrl, new { companyId = CompanyId, deptId = Depts, divId = Divs, empId = Emps, range = objToleranceRangeModel.ToleranceRange.Value, flag = objToleranceRangeModel.ToleranceFlag }); 
if (responseMessage.IsSuccessStatusCode) 
{ 
    var responseData = responseMessage.Content.ReadAsStringAsync().Result; 

} 
else 
{ 
    logger.Error("Error Inside UpdateToleranceRangeByEmployeeId:" + responseMessage.IsSuccessStatusCode); 


} 

API Methode:

[AllowAnonymous] 
[HttpPost] 
[Route("UpdateToleranceRangeByEmployeeId")] 
public HttpResponseMessage UpdateToleranceRangeByEmployeeId(int companyId, List<int> deptId, List<int> divId, List<int> empId, double range, bool flag) 
{ 
    logger.Info("Inside UpdateToleranceRangeByEmployeeId"); 
    HttpResponseMessage response; 
    List<EmployeeModel> ObjEmployeeModelList = new List<EmployeeModel>(); 

    try 
    { 


     ObjEmployeeModelList = this._iEmployeeServices.UpdateToleranceRangeByEmployeeId(companyId, deptId, divId, empId, range, flag); 
     if (ObjEmployeeModelList != null && ObjEmployeeModelList.Count() != 0) 
     { 
      response = Request.CreateResponse<List<EmployeeModel>>(HttpStatusCode.OK, ObjEmployeeModelList); 
     } 
     else 
     { 
      response = Request.CreateResponse(HttpStatusCode.NotFound); 
     } 
    } 
    catch (Exception objEx) 
    { 
     logger.Error("Error Inside UpdateToleranceRangeByEmployeeId:" + objEx); 
     response = Request.CreateResponse<Exception>(HttpStatusCode.ExpectationFailed, objEx); 
    } 
    return response; 
} 

ich Störung erhalte:

responseMessage = {StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: 
{ 
    Pragma: no-cache 
    X-SourceFiles: =?UTF-8?B?RjpcU0FUXFNBVC5BUElcYXBpXEVtcGxveWVlXFVwZGF0ZVRvbGVyYW5jZVJhbmdlQnlFbXBsb3llZUlk?= 
    Cache-Contro... 
+1

Verwenden Sie das '[FromBody]' - Attribut in Ihren Parametern, um die Eigenschaften des Post-Body an Ihre Parameter zu binden. – Nkosi

Antwort

0

Bitte überprüfen Sie, ob Sie die richtige URL haben, bevor die Anforderung zu machen. 404 bedeutet, dass die Ressource nicht gefunden wurde.

+0

Ja, ich habe es korrekt überprüft ... ich denke, die Parameter, die ich s re Probleme verursache – Danish

Verwandte Themen