2016-11-11 4 views
0

私はHTTPメソッドを介して、次のWebAPIのコントローラメソッドにアクセスしようとしているHttpClientを介して、オブジェクトを送る

[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; 
    } 

これは私がUser objオブジェクトを送信使用しようとしているHTTPメソッドで、

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クライアント=新しいHttpClient(); クライアント.BaseAddress =新しいUri(USER_URL); var response = cli ent.PostAsync( "Users/Signin"、コンテンツ)。結果; if(response.IsSuccessStatusCode) return response.Content.ReadAsAsync ()。結果; false false; ' – kez

+0

内部サーバのエラーとは何ですか?あなたのapiは[User/Signin]に投稿している[System.Web.Http.Route( "api/Users/Signin")] – Miguel

関連する問題