次へ戻っ解決要求xml形式の文字列で、使用を容易に値をとるダイレクトビジネスコードを、投稿。
@RequestMapping(値= "/検索"を生成= { "text / htmlの;のcharset = UTF-8"}) パブリック文字列searchGoods(@RequestParam(値= "itemBarCode"、必須= FALSE)文字列itemBarCode、 @RequestParam(値= "Type番号"、必須=偽)は、文字列Type番号、 = falseを必要@RequestParam(値= "MTS")文字列MTS、 @RequestParam(値= "MTE"、必須=偽)は、文字列MTE、 @RequestParam(値=」 ocdsupport "必須=偽)は、文字列ocdsupport、 @RequestParam(値= "yunfeimoban"、必須=偽)は、文字列yunfeimoban、 @RequestParam(値="goodsname」、必要= false)の文字列goodsname、 @RequestParam(値= "goodstate"、必須=偽)は、文字列goodstate、 @RequestParam(値=」namelabel「が必要= false)の文字列namelabel、 @RequestParam(値= "kucun2"、必須=偽)は、文字列kucun2、 @RequestParam(値= "kucun1"、必須=偽)は、文字列kucun1、 @RequestParam(値= "バーコード"、必須=偽)は、文字列、バーコード、 @RequestParam (値= "タイプ"、必須=偽)は、文字列型、 @RequestParam(値= "innertype"、必須=偽)は、文字列innertype、 @RequestParam(値= "storenumber"、必須=偽)は、文字列storenumber、 @RequestParam(値= "にcheckState"、必須= false)を文字列にcheckState、 @RequestParam(値=」StoreNameを」、必要= false)の文字列のStoreNameを、 @RequestParam(値= "pageInfo"、必須= FALSE)文字列pageInfoは)にApiException {スロー )StoreKeyInfo storeKeyInfo = storeKeyInfoService.getStoreKeyInfo(StoreNameをします。 地図<整数、文字列>にマッピング=新しいHashMapの<整数、文字列>(); SdkClient sdkClient = NULL; (もし!storeKeyInfo = NULL){ 文字列APPKEY = storeKeyInfo.getAppKey(); ストリングappSecret = storeKeyInfo.getAppSecret()。 ストリングセッション= storeKeyInfo.getAuthenCode()。 sdkClient =新しいSdkClient(APPKEY、appSecret、セッション、バージョン、フォーマット、 connecttimeout、readTimeout、needEnableParser、needCheckRequest)。 } {他 のSystem.out.println( "找不到店铺:店铺名字为空")。 } ItemsListGet itemsListGet =新しいItemsListGet(); //开始设置查询条件、有的参数就设置、没有就不设置 場合(!Type番号= NULL && typenumber.equals( "")){ itemsListGet.setItm(Type番号)。 } (MTS = NULL && mts.equals( "")!){もし itemsListGet.setMts(MTS)。 } IF(MTE = NULL && mte.equals( "")!){ itemsListGet.setMte(MTE)。 } IF(ocdsupport = NULL && ocdsupport.equals( "!")){ IF(goodsname = NULL && goodsname.equals(! "")){ itemsListGet.setName(goodsname)。 } 場合(goodstate!)){ itemsListGet.setIs_cod(ocdsupport)。 } itemsListGet.setIts(goodstate)。 } IF(!kucun1 = NULL && kucun1.equals( "")){ itemsListGet.setSlv(kucun1)。 } IF(!kucun2 = NULL && kucun2.equals( "")){ itemsListGet.setShv(kucun2)。 } IF(バー= NULL && barcode.equals( "")!){ itemsListGet.setBar_code(バーコード)。 } IF(!innertype = NULL && innertype.equals( "")){ itemsListGet.setSc(innertype)。 } IF(!namelabel = NULL && namelabel.equals( "")){ itemsListGet.setItb(namelabel)。 もし(!!にcheckState = NULL && checkstate.equals( "")){ index11 = result.getBody()のindexOf( "<pageTotal> <[CDATA [!")。 itemsListGet.setDatatype(にcheckState)。 } ItemsListGetRequest itemsListGetRequest =新しいItemsListGetRequest()。 itemsListGetRequest.setItemsListGet(itemsListGet)。 ItemsListGetResponse結果= sdkClient.excute(itemsListGetRequest)。 文字列[] IDS = NULL; 文字列[] updatetimeStrs = NULL; 文字列[] datatypeStrs = NULL; 文字列のpageSize = NULL; int型index11 = 0; int型index22 = 0; System.out.println( "返回的数据是:" + result.getBody()); index22 = result.getBody()のindexOf( "]]> </ pageTotal>")。 。のpageSize = result.getBody()サブストリング(index11 + 20、index22)。 ページInteger.valueOf = INT(pageSizeを); System.out.printlnは( "総ページ" + pageSizeを); //ページ10ページコントロールで、唯一と呼ばれる、他のページ11をクリックしてください (ページ> = 1)場合には{ 。= 1ページ; } //がない場合はクリックしてページ、クエリに応じて IF(!= nullの&& PageInfo pageInfo.equals( "")&& pageInfo.equals( "0")){ int型InsertIndex = 0; //もしいいえ、着信PageInfo、デフォルトの最初のページ。 用(INT 1 = pageIndexパラメータ; pageIndexパラメータ<=ページ; pageIndexパラメータ++){ itemsListGet.setP(String.valueOf(pageIndexパラメータ)); 結果= sdkClient.excute(itemsListGetRequest) のSystem.out.println( " itemsListGetRequest.setItemsListGet(itemsListGet)。 int型のカウント= countStr(result.getBody()、 "<ITEMID> <[CDATA [!"); IDS =新しいString [回数]。 updatetimeStrs =新しいString [回数]。 datatypeStrs =新しいString [回数]。 INT [] indexbegin =新しいint型[1000000]。 INT [] indexbegin2 =新しいint型[1000000]。 INT [] indexbegin3 =新しいint型[1000000]。 以下のために(INT I 1 =、iが<=カウント; I ++){ indexbegin [I - 1] = getIndex(result.getBody()、I、 "<アイテムID>"); indexbegin2 [I - 1] = getIndex(result.getBody()、I、 "<updateTime>"); indexbegin3 [I - 1] = getIndex(result.getBody()、I、 "<データ型>"); } INT [] indexendは=新しいINT [1000000]。 INT [] indexend2 =新しいint型[1000000]。 INT [] indexend3 =新しいint型[1000000]。 以下のために(INT I 1 =、iが<=カウント; I ++){ indexend [I - 1] = getIndex(result.getBody()、I、 "</アイテムID>"); indexend2 [I - 1] = getIndex(result.getBody()、I、 "</ updateTime>"); indexend3 [I - 1] = getIndex(result.getBody()、I、 "</データ型>"); } {(insertIndex ++; - - (pageIndexパラメータ1)* 20 <カウントinsertIndex)のために int型index41 = 0; int型index42 = 0; int型index31 = 0; int型INDEX2 = 0; int型index32 = 0; インデックス1 = indexbegin [insertIndex - (pageIndexパラメータ- 1)* 20]。 INDEX2 = indexend [insertIndex - (pageIndexパラメータ- 1)* 20]。 。IDS [insertIndex] = result.getBody()サブストリング(index1の+ 17、INDEX2 - 3)。 index41 = indexbegin2 [insertIndex - (pageIndexパラメータ- 1)* 20]。 index42 = indexend2 [insertIndex - (pageIndexパラメータ- 1)* 20]。 。updatetimeStrs [insertIndex] = result.getBody()サブストリング(index41 + 21、index42 - 3)。 index31 = indexbegin3 [insertIndex - (pageIndexパラメータ- 1)* 20]。 index32 = indexend3 [insertIndex - (pageIndexパラメータ- 1)* 20]。 。datatypeStrs [insertIndex] = result.getBody()サブストリング(index31 + 19、index32 - 3)。 } } }他の場合(pageInfo!= nullの&&!pageInfo.equals( "")&&!pageInfo.equals( "0")){ //如果有点击页码就根据页码单页查询 ページ= Integer.valueOf(pageInfo ); itemsListGet.setP(String.valueOf(ページ))。 itemsListGetRequestは新しいItemsListGetRequestを()=; itemsListGetRequest.setItemsListGet(itemsListGet)。 RESULT = sdkClient.excute(itemsListGetRequest)。 updatetimeStrs =新しいString [ページ* 20]。 datatypeStrs =新しいString [ページ* 20]。 のSystem.out.println( "返されたメッセージ" + result.getBody())。 int型のカウント= countStr(result.getBody()、 "<ITEMID> <[CDATA [!"); IDS =新しいString [回数]。//查询具体某一页的数据 のint [] indexbegin =新しいint型[1000000]。 INT [] indexbegin22 =新しいint型[1000000]。 INT [] indexbegin33 =新しいint型[1000000]。 以下のために(INT I 1 =、iが<=カウント; I ++){ indexbegin [I-1] = getIndex(result.getBody()、I、 "<アイテムID>"); indexbegin22 [I - 1] = getIndex(result.getBody()、I、 "<updateTime>"); indexbegin33 [I - 1] = getIndex(result.getBody()、I、 "<データ型>"); INT [] indexend22 =新しいint型[1000000]。 以下のために(INT I 1 =、iが<=カウント; I ++){ indexend [I-1] = getIndex(result.getBody()、I、 "</アイテムID>"); indexend22 [I - 1] = getIndex(result.getBody()、I、 "</ updateTime>"); indexend33 [I - 1] = getIndex(result.getBody()、I、 "</データ型>"); } ため(INT I 0 =; I <数; I ++){ int型のインデックス1 = 0。 int型INDEX2 = 0; int型index41 = 0; int型index42 = 0; int型index31 = 0; int型index32 = 0; インデックス1 = indexbegin [I]。 IDS [I] = result.getBody()サブストリング(index1の+ 17、index2-3)。 index41 = indexbegin22 [I]。 index42 = indexend22 [I]。 updatetimeStrs [I] = result.getBody()サブストリング(index41 + 21、index42 - 3)。 index31 = indexbegin33 [I]。 index32 = indexend33 [I]。 datatypeStrs [I] = result.getBody()サブストリング(index31 + 19、index32 - 3)。 } } 文字列returnstr = ""; //存储ids.length条信息 String []型STRS =新しいString [ids.length]。 一覧<ItemVO> listVO =新しいのArrayList <ItemVO>(); System.out.println( "ID个数" + ids.length)。 {(I ++; I <ids.length iが0 = INT)のために IF(IDS [I] = NULL && IDS [I] .equals() "未定義" !!){ 文字列ID = IDS [I]; //を含む同上に記載の商品情報の項目を取得する //ストアイメージアイテム名製品ID名前クーポン株価検証条件のステータスが最後に変更された itemVO itemVO新しい新itemVO =(); //レビューステータスと最終更新時刻取得するITEMLIST itemVO.setCheckstate(datatypeStrs [I]); itemVO.setLastupdatetime(updatetimeStrs [I]); itemVO.setStorename(StoreNameを); //アイテムIDイメージ商品名店舗名をDangdangの株価が状態項目を取得するためにインターフェースに ItemGetRequest新しい新しいItemGetRequestを求める=(); request.setItemsGet(GET)。 ItemGet =新しいItemGetを取得(); get.setIt(ID)。 ItemGetResponse再= sdkClient.excute(リクエスト)。 //开始解析单个的商品 ストリングitemInfoStr = re.getBody()。 System.out.println( "查询到的商品返回信息" + re.getBody()); ストリングのitemId =のgetAttribute(itemInfoStr、 "<アイテムID>"、 "</アイテムID>"); itemVO.setStoreId(のitemId)。 ストリングitemNameに=のgetAttribute(itemInfoStr、 "<itemNameに>"、 "</ itemNameに>"); itemVO.setGoodsname(itemNameに)。 ストリング単価=のgetAttribute(itemInfoStr、 "<単価>"、 "</単価>"); itemVO。 文字列stockCount =のgetAttribute(itemInfoStr、「< itemVO.setStockCount(Integer.parseInt(stockCount))。 ストリングitemState =のgetAttribute(itemInfoStr、 "<itemState>"、 "</ itemState>"); itemVO.setGoodstate(itemState)。 //解析一下图片 INT countpic = countStr(re.getBody()、 "<PIC")。 文字列のpistrs = ""; INT [] beginpic =新しいint型[countpic]。 INT [] endpic =新しいint型[countpic]。 {(H ++; H <= countpic INT H = 1)のために 、= getIndex(re.getBody()、H - beginpic [1 H] endpic [H - 1] = getIndex(re.getBody()、H、 "</ PIC")。 } (INT J = 0; J <countpic。 INT end0 = endpic [J]。 pistrs + = re.getBody()サブストリング(begin0 + 15、end0 - 3)。 } itemVO.setPicture(pistrs)。 IF(I <ids.length - 1) returnstr + = itemVO.toString()+ "#"。 他 returnstr + = itemVO.toString(); } } returnstr + = "@" +のpageSize。 System.out.println( "復帰数据:" + returnstr)。 returnstrを返します。 } パブリック文字列のgetAttribute(列src、文字列のパターン1、パターン2文字列){ 文字列結果= NULL; int型の値index1 = 0; int型INDEX2 = 0; インデックス1 = src.indexOf(パターン1)。 INDEX2 = src.indexOf(PATTERN2)。 結果=(index2-3、9 + index1の+ pattern1.length())src.substring。 結果を返します。 } getIndex int型のpublic static(文字列、int型I、文字列str){ マッチャslashMatcher = Pattern.compile(STR).matcher(列)。 int型MIDX = 0; (slashMatcher.find()){一方 MIDX ++。 IF(MIDX == I){ ブレーク。 } } )(slashMatcher.startを返します。 } プライベートINT countStr(文字列str、文字列sToFind){ int型NUM = 0。 一方、(str.contains(sToFind)){ STR = str.substring(str.indexOf(sToFind)+ sToFind.length())。 NUM ++; } NUMを返します。 }