Ajax基础教程(4)- 实现基本Ajax技术 4.8 访问Web服务

http://tech.ddvip.com   2007年11月21日    社区交流

本文详细介绍Ajax基础教程(4)- 实现基本Ajax技术 4.8 访问Web服务

  点击页面上的Submit(提交)按钮将调用doSearch函数。这个函数使用createQuery- String函数来创建目标URL,createQueryString函数负责把搜索项和显示的最大结果数(即最多显示多少个结果)放在查询串中。需要注意,参数名(query和results)都是Yahoo! Search API定义的。

  createQueryString函数创建的查询串发送给Yahoo! Search网关。在这个例子中,网关实现为名为YahooSearchGatewayServlet的Java servlet(见代码清单4-16)。这个servlet的目的很简单,就是转发对Yahoo! Search URL的所有请求,并把结果传给浏览器。当然,这个网关也可以用其他语言(而不是Java)来实现。这个网关很简单,在XMLHttpRequest对象需要访问其他域中的资源时,这个网关确实能解决问题。

  代码清单4-16 YahooSearchGatewayServlet.java

  package ajaxbook.chap4;
  import java.io.*;
  import java.net.HttpURLConnection;
  import java.net.URL;
  import javax.servlet.*;
  import javax.servlet.http.*;
  public class YahooSearchGatewayServlet extends HttpServlet {
  private static final String YAHOO_SEARCH_URL =
  "http://api.search.yahoo.com/WebSearchService/V1/webSearch?"
  + "appid=your_app_id" + "&type=all";
  protected void processRequest(HttpServletRequest request
   , HttpServletResponse response)
  throws ServletException, IOException {
  String url = YAHOO_SEARCH_URL + "&" + request.getQueryString();
  HttpURLConnection con = (HttpURLConnection)new URL(url).openConnection();
  con.setDoInput(true);
  con.setDoOutput(true);
  con.setRequestMethod("GET");
  //Send back the response to the browser
  response.setStatus(con.getResponseCode());
  response.setContentType("text/xml");
  BufferedReader reader =
   new BufferedReader(new InputStreamReader(con.getInputStream()));
  String input = null;
  OutputStream responseOutput = response.getOutputStream();
  while((input = reader.readLine()) != null) {
  responseOutput.write(input.getBytes());
  }
  }
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  processRequest(request, response);
  }
  }

来源:CSDN    责编:豆豆技术应用

正在加载评论...