2016-07-16 13 views
-1

Web APIを作成しましたが、これを確認してうまくいきましたが、問題はWeb API asp .netのWeb APIですBoiMemberController私はパラメーターを指定せずにこのWeb APIを呼び出すときに、それが正常に動作しますが、私はパラメータを渡すように私は、ステータスコード404エラーを取得するという名前のAPIコントローラでasp.net webフォームのステータスコード404でWeb APIを呼び出す際にエラーが発生しました404

protected void btn_search_Click(object sender, EventArgs e) 
{ 
    HClient.BaseAddress = new Uri("http://localhost:50653/"); 

    HClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

    BoiMember obj = new BoiMember(); 
    obj.CustomerId = txt_customerid.Text.Trim(); 
    obj.AadhaarNo = txt_aadharno.Text.Trim(); 
    obj.CustomerName = txt_name.Text.Trim(); 
    obj.AccountNo = txt_accountno.Text.Trim(); 
    obj.MobileNo = txt_mobile.Text.Trim(); 
    obj.branchcd = Session["BranchCode"].ToString(); 
    obj.ZoneCode = Session["ZoneCode"].ToString(); 
    obj.Campcd = "1"; 
    obj.ind = 1; 
    obj.SourceType = 2; 
    obj.UserId = Session["UserName"].ToString(); 
    string uri = "api/BoiMember/GetRecord/"; 
    var response = HClient.GetAsync(uri+obj).Result; 

    if (response.IsSuccessStatusCode) 
    { 
     var GetData = response.Content.ReadAsAsync<IEnumerable<BoiMember>>().Result; 
     GvdRecords.DataSource = GetData; 
     GvdRecords.DataBind(); 
    } 
    else 
    { 

    } 
} 

どこのWeb APIを呼び出す以下のコード見つかりません。あなたは[some object].ToString()ToStringメソッドは、オブジェクトの型を返す行うときに私のウェブAPIConfig.csは、デフォルトでは、コード

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

なぜあなたは 'uri + obj'をやっていますか?それは有効なURLにつながることはありません。それは何を生み出すのですか? – Nkosi

+0

'obj'を' uri + '/' + obj'という文字列にシリアル化しても、それはあまり意味がありません。どうすれば使えますか? –

答えて

1

を持っています。したがって、おそらくapi/BoiMember/GetRecord/BoiMember(完全修飾型には不明)のような文字列を渡している可能性があります。文字列の書式設定を使用してURIを構築する必要があります。

var uri = string.Format("api/BoiMember/GetRecord/?customerId={0}&aadhaarNo={1}" 
, txt_customerid.Text.Trim() 
, txt_aadharno.Text.Trim()); 

ここでは、パラメータがクエリ文字列パラメータであることを前提としています。 URL内にパラメータがあるWeb APIがある場合は、それに応じて文字列の構造を変更する必要があります。

必要に応じてヌルチェックが必要です。パラメータが空の場合は、APIに送信したくない場合もあります。

+0

thanx @Igorこれは機能しましたが、パラメータとしてオブジェクトを渡すことができます –

+0

@AmitYadav - GETまたはDELETEではありません。 Post/Putでは、シリアライザ(通常はJSONまたはXML)を使用してシリアル化する必要があります。 HttpClientでこれを行う方法に関するチュートリアルがたくさんあります。 – Igor

関連する問題