作成中のWeb APIからWeb APIを呼び出しています。私が呼び出すAPIは、Web APIのハンドル例外
<lab:lab uri="https://bh03.org/api/lb/3" xmlns:udf="http://ge.com/ri/userdefined" xmlns:ri="http://ge.com/ri" xmlns:lab="http://ge.com/ri/lab">
<name>GTech</name>
<udf:field type="String" name="Account ID">gt</udf:field>
<website/>
</lab:lab>
のように応答を返します。これは、アカウントIDの値を抽出して文字列に格納しています。私は
using (var client_LabURL = new HttpClient())
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
Uri Uri_LabURL = new Uri(result_LabURL);
client_LabURL.BaseAddress = Uri_LabURL;
client_LabURL.DefaultRequestHeaders.Accept.Clear();
client_LabURL.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
client_LabURL.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray_Clarity));
var response_LabURL = client_LabURL.GetAsync(Uri_LabURL).Result;
string responseString_LabURL = response_LabURL.Content.ReadAsStringAsync().Result;
XDocument new_doc = XDocument.Parse(responseString_LabURL);
XNamespace ns = "http://ge.com/ri/userdefined";
string accountID = new_doc.Descendants(ns + "field").FirstOrDefault(field => field.Attribute("name").Value.Equals("Account ID")).Value;
を使用していたコードしかし、それにはアカウントIDとフィールド<udf>
を持っているのdoesnt時々API以下
。
<lab:lab uri="https://bh03.org/api/v2/labs/1302" xmlns:udf="http://ge.com/ri/userdefined" xmlns:ri="http://ge.com/ri" xmlns:lab="http://ge.com/ri/lab">
<name>lsd</name>
</lab:lab>
このシナリオでは、無効なAPI呼び出しのような応答を作成したいと考えています。だから私は以下のコード
if (string.IsNullOrEmpty(accountID))
{
return ResponseMessage(Request.CreateResponse(new { error = "Invalid API Call" }));
}
これは、IDアカウントがない場合、私は期待していレスポンスを返すdoesnotではなくHTTP 500エラーをスローしaddded。どうすればこれを処理できますか?あなたのコードでNullReferenceException
例外を持っているので、すべてのヘルプは大幅
:?
あなたのような何かを試すことができますか –
accountIDという文字列がnullの場合、レスポンスを作成しています。返すResponseMessage(Request.CreateResponse(new {error = "無効なAPI呼び出し"}))); ' – trx
*クライアント側*? –