protected XDocument ItemSearch(string keywords, string searchIndex = "All", string responseGroup = "Large", int itemPage = 1) { var request = new Dictionary<string, string>(); request["Service"] = "AWSECommerceService"; request["Version"] = "2011-08-01"; request["Operation"] = "ItemSearch"; request["SearchIndex"] = searchIndex; request["ResponseGroup"] = responseGroup; request["Keywords"] = keywords; request["ItemPage"] = itemPage.ToString(); var helper = new AmazonSignedRequestHelper(MY_AWS_ACCESS_KEY_ID, MY_AWS_SECRET_KEY, MY_ASSOCIATE_TAG, DESTINATION); var requestUrl = helper.Sign(request); var doc = XDocument.Load(requestUrl); TotalPages = Int32.Parse(doc .Element(NAMESPACE + "ItemSearchResponse") .Element(NAMESPACE + "Items") .Element(NAMESPACE + "TotalPages") .Value); // Amazon affiliate currently limits search results to 5 pages. TotalPages = TotalPages > MAX_SEARCH_RESULT ? MAX_SEARCH_RESULT : TotalPages; return doc; }
// 准备用于重新装载的请求的 URL int GetReloadRequestUrl( List<ListViewItem> items, string strElementSet, out string strUrl, out string strError) { strError = ""; strUrl = ""; AmazonSignedRequestHelper helper = new AmazonSignedRequestHelper( //MY_AWS_ACCESS_KEY_ID, //MY_AWS_SECRET_KEY, this.CurrentServer); if (items == null || items.Count == 0) { strError = "items 参数不应为空"; return -1; } // 获得 ASIN 字符串 StringBuilder asin = new StringBuilder(4096); foreach (ListViewItem item in items) { if (asin.Length > 0) asin.Append(","); asin.Append(item.Text); } IDictionary<string, string> parameters = new Dictionary<string, String>(); parameters["Service"] = "AWSECommerceService"; parameters["Version"] = "2011-08-01"; parameters["Operation"] = "ItemLookup"; parameters["ItemId"] = asin.ToString(); parameters["IdType"] = "ASIN"; if (strElementSet == "F") parameters["ResponseGroup"] = "Large"; else parameters["ResponseGroup"] = "Small"; #if TTT parameters["AssociateTag"] = ASSOCIATEKEY; #endif strUrl = helper.Sign(parameters); return 0; }
// 准备用于获得下一批浏览记录的请求的 URL int GetNextRequestUrl(out string strUrl, out string strError) { strError = ""; strUrl = ""; if (string.IsNullOrEmpty(this.m_strCurrentSearchedServer) == true) { strError = "this.m_strCurrentSearchedServer 为空"; return -1; } AmazonSignedRequestHelper helper = new AmazonSignedRequestHelper( //MY_AWS_ACCESS_KEY_ID, //MY_AWS_SECRET_KEY, this.m_strCurrentSearchedServer); // this.CurrentServer if (this.m_nCurrentPageNo == -1) { strError = "m_nCurrentPageNo 尚未初始化"; return -1; } // ItemPage URL 参数的值是从 1 开始计算的 m_searchParameters["ItemPage"] = (this.m_nCurrentPageNo + 1 + 1).ToString(); strUrl = helper.Sign(m_searchParameters); return 0; }
// 准备用于首次检索的 URL int GetSimpleSearchRequestUrl(out string strUrl, out string strError) { strError = ""; strUrl = ""; string strText = ""; int nRet = this.amazonSimpleQueryControl_simple.BuildQueryString(out strText, out strError); if (nRet == -1) return -1; AmazonSignedRequestHelper helper = new AmazonSignedRequestHelper( //MY_AWS_ACCESS_KEY_ID, //MY_AWS_SECRET_KEY, this.CurrentServer); // IDictionary<string, string> r1 = this.amazonQueryControl1.ParameterTable; // new Dictionary<string, String>(); IDictionary<string, string> parameters = new Dictionary<string, String>(); parameters["Service"] = "AWSECommerceService"; parameters["Version"] = "2011-08-01"; parameters["Operation"] = "ItemSearch"; parameters["SearchIndex"] = "Books"; parameters["Power"] = strText; if (this.AlwaysUseFullElementSet == true) parameters["ResponseGroup"] = "Large"; else parameters["ResponseGroup"] = "Small"; #if TTT parameters["AssociateTag"] = ASSOCIATEKEY; #endif m_searchParameters = parameters; m_strCurrentSearchedServer = this.CurrentServer; strUrl = helper.Sign(parameters); return 0; }
// 准备用于获得下一批浏览记录的请求的 URL int GetNextRequestUrl( string strServerUrl, out string strUrl, out string strError) { strError = ""; strUrl = ""; AmazonSignedRequestHelper helper = new AmazonSignedRequestHelper( //MY_AWS_ACCESS_KEY_ID, //MY_AWS_SECRET_KEY, strServerUrl); if (this.m_nCurrentPageNo == -1) { strError = "m_nCurrentPageNo 尚未初始化"; return -1; } // ItemPage URL 参数的值是从 1 开始计算的 m_searchParameters["ItemPage"] = (this.m_nCurrentPageNo + 1 + 1).ToString(); strUrl = helper.Sign(m_searchParameters); return 0; }
// private const string DESTINATION = "webservices.amazon.cn"; // "ecs.amazonaws.com"; // 准备用于检索的 URL int GetOneLineSearchRequestUrl( string strServerUrl, string strWord, string strFrom, string strMatch, bool bUseFullElementSet, out string strUrl, out string strError) { strError = ""; strUrl = ""; if (string.IsNullOrEmpty(strWord) == true) { strError = "strWord 参数值不能为空"; return -1; } string strText = ""; // 构造检索式 int nRet = BuildQueryString( strWord, strFrom, strMatch, out strText, out strError); if (nRet == -1) return -1; AmazonSignedRequestHelper helper = new AmazonSignedRequestHelper( //MY_AWS_ACCESS_KEY_ID, //MY_AWS_SECRET_KEY, strServerUrl); IDictionary<string, string> parameters = new Dictionary<string, String>(); parameters["Service"] = "AWSECommerceService"; parameters["Version"] = "2011-08-01"; parameters["Operation"] = "ItemSearch"; parameters["SearchIndex"] = "Books"; parameters["Power"] = strText; if (bUseFullElementSet == true) parameters["ResponseGroup"] = "Large"; else parameters["ResponseGroup"] = "Small"; #if TTT parameters["AssociateTag"] = ASSOCIATEKEY; #endif m_searchParameters = parameters; // m_strCurrentSearchedServer = this.CurrentServer; strUrl = helper.Sign(parameters); return 0; }