私はwebapiで1つの文字列を取得する方法を知っています。しかし、私はwebapiでハッシュテーブルを使う方法を知らない。ハッシュテーブルでは、フォームごとに異なる条件がありますが、同じAPIを呼び出すためです。WebAPIの条件としてHashtableを使用してデータを取得する方法は?
文字列をダウンロード中にエラーを与えているSystem.Collections.Hashtable _condition = new System.Collections.Hashtable();
if (TPX.StringHelper.NVL(cbxStatus.EditValue, "-Please Select-") != "-Please Select-")
_condition.Add("Status", cbxStatus.EditValue.ToString());
if (TPX.StringHelper.NVL(cbxCenter.EditValue, "-Please Select-") != "-Please Select-")
_condition.Add("Center", cbxCenter.EditValue.ToString());
if (chkHideDone.Checked)
_condition.Add("IsDone", Convert.ToInt32(!chkHideDone.Checked));
_condition.Add("StartDate", dtpBegin.DateTime.ToString("yyyyMMdd"));
_condition.Add("EndDate", dtpEnd.DateTime.ToString("yyyyMMdd"));
string itemJson = Newtonsoft.Json.JsonConvert.SerializeObject(_condition);
string navURL = GlobalParameters.Host + "api/Order/RetrieveOrderList?conditions="+itemJson;
using (System.Net.WebClient webClient = new System.Net.WebClient())
{
webClient.Headers["Content-Type"] = "application/json";
webClient.Encoding = Encoding.UTF8;
string sJson = webClient.DownloadString(navURL); List<Models.OrderList> myDeserializedObjList = (List<Models.OrderList>)Newtonsoft.Json.JsonConvert.DeserializeObject(sJson, typeof(List<Models.OrderList>));
grdOrder.DataSource = myDeserializedObjList;
}
(webclient.downloadstring(navURL)):
私は.net3.5
例を使用しています。 注:同じロジックをコピーしてもう1つを作成し、ハッシュテーブルではなく1つのフィールドでフィルタリングしました。問題はありません。 私はプロジェクトの異なる場所で同じロジックを使用しているので、供給される条件だけが異なるので、実際にhashtbaleが必要です。
本当にありがとうございます。ありがとう。
お勧めしたとおりに試みました。しかし、同じエラーが返されました(エラー500、内部サーバーエラー)。変更を適用する前に、私のapiリンクはhttp:// localhost:8989/api/Order/RetrieveOrderList?conditions = {"StartDate": "20170923"、 "Status": "100"、 "EndDate": "20170930"現在のhttp:// localhost:8989/api/Order/RetrieveOrderList?条件=%7B%22StartDate%22%3A%2220170923%22%2C%22Status%22%3A%22100%22%2C%22終了日%22% 3A%2220170930%22%7D – Mdyahiya
詳細については100%確信することはできませんが、エラー500は通常、サーバー上のWebAPI要求を処理するメソッドが未処理の例外をスローするときに発生します。だから、WebClientではなく、サーバー上で問題が発生しています。サーバーコードをデバッグし、例外がスローされる理由を確認する必要があります。 –
@Nuf、私は同じロジックを使用しており、私のデータモデルは他のプロジェクトで例外なく動作します。私が呼び出しているときにwebapiを与えるエラーが発生します。だから、私のapi呼び出しメソッドで何かが間違って感じる。私はHTTPGETを使用しています。私はHTTP Postがデータを取得するために動くのかどうか分からない。私もそれを試みた。 webapiでハッシュテーブル条件で取得するためのいくつかの例が素晴らしいでしょう。ありがとう – Mdyahiya