2014-10-02 28 views
0

我調用WebApi方法並將數據傳遞給它。在調試時,我可以看到我的控件轉到WebAPI方法,但它沒有收到我傳遞給它的正確參數數據。在調試時,我可以看到數據(字符串)正在傳遞給WebApi,但在下一步WebApi接收到null。是否需要一些配置來接收參數?請幫我在下面是我的代碼:不正確的數據「空」正在傳遞給Web API?

public static string PostData(Uri url,string obj) 
     { 
      string data = null; 

      try 
      {       

       using (WebClient proxy = new WebClient()) 
       {     
        proxy.Headers.Add(HttpRequestHeader.ContentType, "application/json"); 
        data = proxy.UploadString(url,"Post",obj); 
       } 
      } 
      catch (Exception ex) 
      {    
       throw ex; 
      } 
      return data; 
     } 

的WebAPI

[HttpPost] 
     public void Post([FromBody]string data) 
     { 
      leadOptService.AddListOptions(data);    
     } 

的WebAPI Conifg:

public static void Register(HttpConfiguration config) 
     { 
      // Web API configuration and services 

      // Web API routes 
      config.MapHttpAttributeRoutes(); 

      config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 
     } 

回答

1

您尚未將您的文章給任何路由。所以使用默認路由時,它試圖將其與id參數相匹配。您可以爲您的API一個新的路線是這樣的:

[RoutePrefix("myController")] 
public class MyController : ApiController 
{ 
    [Route("")] 
    public void Post([FromBody]string data) 
    { 
     leadOptService.AddListOptions(data);    
    } 
} 

假設你的控制器被稱爲MyController,你會通過POST api/mycontroller調用它。

+0

感謝答覆填滿,我沒有,但有錯誤「的遠程服務器返回錯誤:(405)不允許的方法」 在調試控制中不會去WebApi。請幫助 – user576510 2014-10-02 05:56:16

+0

我嘗試過在Fidler中調用並接收這個messae「{」Message「:」請求的資源不支持http方法'POST'。「}」 在我的調用方法中,我也有「Post」。請指導。 – user576510 2014-10-02 06:03:27

+0

在我看來,這個問題與路由無關,因爲調用得到正確路由,它更多的是傳遞json數據和輸入參數之間的模式不匹配 – 2014-10-02 06:18:09

1

在我看來這裏的問題是不同的,爲了澄清問題,您通過http body將Json數據傳遞給WebAPI post方法,儘管您可以看到web api中的調用中斷但沒有數據獲取填充,輸入數據保持爲空

原因是傳遞數據的架構和參數之間的不匹配接收它,你是使用JSON通過下面的參數字符串:

[FromBody]string data 

的Json總是一個關鍵值對,所以你的http身體應該是這樣的格式:

{ 
"data":"Message" 
} 

這將確保「信息」獲取輸入參數

+0

謝謝,我試過傳遞我的名字,但它仍然是空的。 – user576510 2014-10-02 06:33:20

+0

爲了澄清從我的MVC控制器我可以傳遞一個字符串(只是我的名字或一個對象序列化),以幫助有問題的方法。但從幫助方法到WebApi方法接收參數爲null。 – user576510 2014-10-02 06:34:57

+0

最後的Json不正確,請看編輯後的版本,關鍵還需要在引號中。剛剛在Json Lint驗證器上試過 – 2014-10-02 06:37:31