我超級堅持一個簡單的API使用超過一個星期了。這裏是細節。解析XML空引用異常錯誤? C#ASP
試圖做一個API調用ebay.com。 這裏是我的代碼看起來像......
這是起始頁面代碼:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Results.aspx?Keywords=" + searchString.Text);
}
頁是針對這段代碼:
if (Request.QueryString["Keywords"] != null){
string keywords = Request.QueryString["Keywords"];
string myAppID = "HIDDEN";
var xml = XDocument.Load("http://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findItemsByKeywords&SERVICE-VERSION=1.0.0&SECURITY-APPNAME=" + myAppID + "&RESPONSE-DATA-FORMAT=XML&REST-PAYLOAD&keywords=" + keywords + "&paginationInput.entriesPerPage=5");
XNamespace ns = "http://www.ebay.com/marketplace/search/v1/services";
var titles = from item in xml.Root.Descendants(ns + "title")
select new{
title = xml.Descendants(ns + "title").Select (x => x.Value),
};
foreach (var item in titles){
Label1.Text += item;
}
}
這裏是XML例如:
<findItemsByKeywordsResponse xmlns="http://www.ebay.com/marketplace/search/v1/services">
<searchReslut count="5">
<item>
<title></title>
</item>
<item>
<title></title>
</item>
<item>
<title></title>
</item>
我真的寧願把項目變成一個數組,而不僅僅是列出出去。我以爲我會先嚐試更簡單的方法。錯誤我得到的是: for循環輸出到我的標籤是這樣的:
{ title = System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String] }{ title = System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String] }{ title = System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String] }{ title = System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String] }{ title = System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String] }
和輸出的例外是:
類型的「System.Threading.ThreadAbortException」第一次機會異常發生的mscorlib .dll 在mscorlib.dll中發生類型'System.Threading.ThreadAbortException'的異常,但未在用戶代碼中處理 線程''(0x27ee4)已退出,代碼爲0(0x0)。
任何幫助表示讚賞!
你樣本中的XML太大了。我強烈建議將它縮小(大約7-10行),但仍然有效並重現該問題。我懷疑你會發現錯誤來自哪裏。如果沒有 - 會更容易回答。 –
以上感謝編輯Alexei – allencoded