2016-11-11 76 views
0

我试图通过HTTP的方法来访问下面的WebAPI控制器的方法发送对象

[System.Web.Http.Route("api/Users/Signin")] 
    [ResponseType(typeof(bool))] 
    public bool UserSingIn(User obj) 
    { 
     bool isuserexit = _usersRepo.UserSignIn(obj); 
     if (isuserexit == true) 
     { 
      return true; 
     } 

     return false; 
    } 

这是HTTP方法我试图用送User obj对象,

private string USER_URL = "http://localhost:3623/api/Users"; 

    public bool GetUser(User obj) 
    { 
     try 
     { 
      HttpClient client = new HttpClient(); 
      client.BaseAddress = new Uri(USER_URL); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
      HttpResponseMessage response = client.PutAsJsonAsync("Users/Signin", obj).Result; 
      if (response.IsSuccessStatusCode) 
       return response.Content.ReadAsAsync<bool>().Result; 
      return false; 

     } 
     catch 
     { 
      return false; 
     } 

    } 

但是这以response : {StatusCode: 405, ReasonPhrase: 'Method Not Allowed', ..}

+0

我认为你必须在你的URL中加入'/ Signin'。 –

+0

您正在向GET端点发出HTTP PUT请求。 –

+0

@ChrisPickford我把'[HttpPut]'然后得到''内部服务器错误'' – kez

回答

0

结束您的Web API默认只处理GET请求。如果你想使用它,你需要用HttpPut属性来修饰它。

[HttpPut] 
[System.Web.Http.Route("api/Users/Signin")] 
[ResponseType(typeof(bool))] 
public bool UserSingIn(User obj) 
+0

然后我得到''内部服务器错误'' – kez

+0

@kez调试你的Web API。它应该抛出一个异常,你可以阅读 –

0

您可以使用postAsync方法。

var data = JsonConvert.SerializeObject(dataToSave); 
var content = new StringContent(data, Encoding.UTF8, "application/json"); 
var resp = client.PostAsync(apiUrl, content).Result; 
+0

根据您的建议更改方法,但发生内部服务器错误var data = JsonConvert.SerializeObject(obj); var content = new StringContent(data,Encoding.UTF8,“application/json”); HttpClient客户端= new HttpClient(); client.BaseAddress = new Uri(USER_URL); var response = cli ent.PostAsync(“Users/Signin”,内容).Result; if(response.IsSuccessStatusCode) return response.Content.ReadAsAsync ().Result; 返回false;' – kez

+0

什么是内部服务器错误?你的API是[System.Web.Http.Route(“api/Users/Signin”)]你发布到“Users/Signin” – Miguel