2010年10月23日星期六

汉字按拼音排序

java中汉字按拼音排序
import java.util.Comparator;

class PinYinComparator implements Comparator<String> {

public int compare(String s1, String s2) {
return ((java.text.RuleBasedCollator)java.text.Collator.
getInstance(java.util.Locale.CHINA)).compare(s1, s2);
}
}


但是在GWT中不支持java.text...

改成这样

new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
return javascriptSort(o1, o2);
}

private native int javascriptSort(Object a, Object b)/*-{
return a.localeCompare(b);
}-*/;
}

2010年10月22日星期五

在GAE上简单实现了一个淘宝客

在网上无意搜到一个用Ext实现的淘宝客,恩 ,咱用GWT做一个车轮

下了淘宝的 SDK for java就开干 参考API文档按部就班

在淘宝的沙箱里测试,很顺利,乘胜前进,到正式环境下测试

问题来了

invalid signature

网上搜了一通,有说时间戳不对,果不其然,GAE使用的是标准时间,整整差了8小时,遂在获得的当前时间上加了8小时,OK

invalid signature 可能的另一个原因是APP_KEY 或 APP_SERCET不正确,仔细检查

 

调用 taobao.item.get

 

1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY, TaobaokeConstant.APP_SERCET);
2 ItemcatsGetRequest req=new ItemcatsGetRequest();
3 java.util.Calendar c=java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT+8"));
4 c.add(Calendar.HOUR, 8);
5 req.setTimestamp(c.getTime().getTime()) ;
6 req.setParentCid(new Long(0));
7 ItemcatsGetResponse response=client.execute(req);
8 return response.getItemCats();

 

调用 taobao.taobaoke.items.get 1 TaobaoClient client=new DefaultTaobaoClient(TaobaokeConstant.SANDBOX_URL, TaobaokeConstant.APP_KEY,TaobaokeConstant.APP_SERCET);
2 TaobaokeItemsGetRequest req=new TaobaokeItemsGetRequest();
3 req.setFields("num_iid,title,nick,pic_url,price,click_url,commission,commission_rate,commission_num,commission_volume,shop_click_url,seller_credit_score,item_location,volume,taobaoke_cat_click_url,keyword_click_url");
4 req.setCid(Long.parseLong(cid));
5 req.setNick(TaobaokeConstant.NICK);
6 req.setSort("commissionRate_desc");
7 TaobaokeItemsGetResponse response=client.execute(req);
8 return response.getTaobaokeItems(); 想用GAE JCache API 加入缓存以减轻压力,但屡试不行,从缓存中取 的时候报错没找到原因 改用自己写的缓存,然后用App Engine Cron 服务管理缓存 corn.xml 1 <?xml version="1.0" encoding="UTF-8"?>
2 <cronentries>
3   <cron>
4     <url>/cron/recache</url>
5     <description>Repopulate the cache every 1 hours</description>
6     <schedule>every 1 hours</schedule>
7   </cron>
8 </cronentries>

2010年10月20日星期三

GWT POST 提交页面


GWT  POST 提交页面


将所有参数以&分隔放入builder.setRequestData中

01 RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, BASIC_URL);
02 builder.setHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
03 builder.setRequestData("chartSWF=" + be.getSelectedItem().getType() + ".swf&chartId=" + be.getSelectedItem().getType() + "&strXML=" + generateXml(entry));
04 builder.setCallback(new RequestCallback(){
05      public void onError(Request request, Throwable exception) {  
06          chart.removeAll();chart.addText("出错啦");
07      }
08      public void onResponseReceived(Request request, Response response) {
09      if(200 == response.getStatusCode()){
10          chart.removeAll();
11          chart.addText(response.getText());
12          chart.layout();
13      }else{
14          chart.removeAll();chart.addText("出错啦");
15      }
16      }
17 });
18    
19      try {
20      builder.send();
21 } catch (RequestException e) {
22     e.printStackTrace();
23 }


参考:http://blog.csdn.net/leoyunfei/archive/2008/12/26/3611565.aspx