`
wangjinshan1314
  • 浏览: 8330 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

json 调用 Google 图片搜索

阅读更多


/*****************************************/
使用Google Ajax API 来实现图片的搜索功能:在实现的过程中要用到的技术有:Jquery,json 等技术

/*************************************************************/
jsp页面:
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">


    $(function(){

       //当单击提交按钮的时候,进行异步请求查询数据
$("#bt").click(function(){
//进行post方法来异步请求
   $.get("JsonServlet",
{imageName:encodeURI($("#imageName").val(),"utf-8"),imageSource:$("input[name=iamgeSource]:checked").val()},
   function(returnedData,status){
$("#showPic").empty();
var html="";
for(var i=0;i<returnedData.length;i++){

html +="<img src='"+returnedData[i]+"' width='150' height='150'/>";
}
$("#showPic").append(html);

   }

   );
});
$("#save").click(function(){

   $("#pro").html("<font color='red'>processing....</font>");

          $.post("SaveImageServlet",null,function(returnedData,result){


alert(returnedData);

});

});

     });

</script>
  </head>
 
  <body>
    
     <input type="text" id="imageName" />
     <input type="radio" name="iamgeSource" value="google"  checked="checked" />google
     <input type="radio" name="iamgeSource" value="flickr"/>flickr
     <br/>
     <input type="button" id="bt" value="提交"/>
     <input type="button" id="save" value="保存"/>
     <div id="pro"></div>
    
     <div id="showPic"></div>




/*****
*使用dopost来接受参数,并返回图片路径
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
             
PrintWriter out = response.getWriter();
        String imageName=URLDecoder.decode(request.getParameter("imageName"),"utf-8");
        String imageSource=request.getParameter("imageSource");
        HttpSession session=request.getSession();

        try {
       
        //存储向客户端发送的url
        List<String> returnList=new ArrayList<String>();
            session.setAttribute("iamgeName", imageName);
            session.setAttribute("picSource", imageSource);
            session.setAttribute("images",returnList);
        //判断用户使用的是什么搜索
        if("google".equals(imageSource)){      
            //存储每次从Google货到的json数据
            List<String> lists=new ArrayList<String>();
           
            for(int i=0;i<4;i++){
            String queryStr=new StringBuffer(Contant.GOOGLE_URL)
            .append("q=").append(imageName)
            .append("&start=").append(8*i).toString();
            lists.add(NetwordUtil.getStringContentFromURL(queryStr));
            }
            for(String result:lists){
            JSONObject jsonContent=new JSONObject(result);
            JSONObject responseData=jsonContent.getJSONObject("responseData");
            JSONArray results=responseData.getJSONArray("results");//获得results数据
            for(int i=0;i<results.length();i++){
           
            JSONObject jsonObject=results.getJSONObject(i);//获得第i个对象
            String url=jsonObject.getString("url");
           
            returnList.add(url);
           
            }         
            }
           
        }else{
        System.out.println("filics");
       
       
        }
          Gson gson=new Gson();
         
          String jsonResult=gson.toJson(returnList);
          response.setContentType("application/json;charset=utf-8");
          response.setHeader("pragma","no-cache");
          response.setHeader("cache-control","no-cache");
          out.print(jsonResult);
         
} catch (Exception e) {
// TODO: handle exception
}
       

out.flush();
out.close();
}

/**********************************************************/
在调用的时候要住的是一个google的链接字符串
    public static String GOOGLE_URL="https://ajax.googleapis.com/ajax/services/search/images?key=ABQIAAAATqqFqs7EA6jhOIdd5baQSBR1OFzB8QaN0RkKyqZMsix3w73wyBRuPkw-_I8d5TLsv6PvoKsXmxpv4Q&rsz=large&v=1.0&" ;
}
    必须自己申请一个key
    https://ajax.googleapis.com/ajax/services/search/images
    搜索images文件的位置:
     Key :API KEY
    rsz:表示图片大小
     v:表示版本号
   在保存图片的时候使用单线程调用
       public static String getStringContentFromURL(String queryString) throws Exception{
   //定义url对象
   URL url=new URL(queryString);
   //获得urlConnection对象
   URLConnection conn=url.openConnection();
   //打开输入流
   InputStream is=conn.getInputStream();
   //获得字符输入流
   InputStreamReader isr=new InputStreamReader(is);
   //转换成bufferedReader缓冲流
   BufferedReader br=new BufferedReader(isr);
   StringBuffer buffer=new StringBuffer();
   String line=null;
   while(null!=(line=br.readLine())){
  
   buffer.append(line);
   }
   br.close();
   isr.close();
   is.close();
   return buffer.toString();
  
   }
   也可以使用外部的文件上传的插件来实现
  如果要用到线程的方法来保存图片的时候,可以根据自己的需要来设置!
/***************************************************************/
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics