`
yonglin4605
  • 浏览: 187615 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

RequestBuilder处理rss

    博客分类:
  • GWT
阅读更多
创建一个测试数据rss.xml
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
	<title>焦点新闻</title>
	<item>
		<title>百度今晨被黑客攻击</title>
		<link>http://www.iteye.com/news/12883</link>
	</item>
	<item>
		<title>Android 2.1 SDK 发布</title>
		<link>http://www.iteye.com/news/12897</link>
	</item>
	<item>
		<title>震撼人心的新科技 - Sixth Sense</title>
		<link>http://www.iteye.com/news/12856</link>
	</item>
	<item>
		<title>IBM内部秘密研发翻译软件挑战Google</title>
		<link>http://www.iteye.com/news/12828</link>
	</item>
</channel>
</rss>


package com.single.test.client;

import com.extjs.gxt.ui.client.event.DragEvent;
import com.extjs.gxt.ui.client.event.DragListener;
import com.extjs.gxt.ui.client.fx.Draggable;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.ModalPanel;
import com.extjs.gxt.ui.client.widget.Popup;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.RequestTimeoutException;
import com.google.gwt.http.client.Response;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.NamedFrame;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.VerticalSplitPanel;
import com.google.gwt.xml.client.Document;
import com.google.gwt.xml.client.Node;
import com.google.gwt.xml.client.NodeList;
import com.google.gwt.xml.client.XMLParser;

public class Test implements EntryPoint {

	
	public void onModuleLoad() {
		try {
			//创建请求
			RequestBuilder builder=new RequestBuilder(RequestBuilder.GET, GWT.getHostPageBaseURL()+"rss.xml");
			
			builder.setTimeoutMillis(5000);
			builder.sendRequest(null, new RssHandler());
		} catch (RequestException e) {
			e.printStackTrace();
		}
		
	}
	/**
	 * 请求返回后的处理
	 */
	class RssHandler implements RequestCallback{
		@Override
		public void onError(Request request, Throwable exception) {
			if(exception instanceof RequestTimeoutException){
				Window.alert("请求超时");
			}else{
				Window.alert("发生异常");
			}
		}
		@Override
		public void onResponseReceived(Request request, Response response) {
			//如果返回异常(code!=200)
			if(response.getStatusCode()!=Response.SC_OK){
				Window.alert("发生异常");
				return;
			}
			//创建RSS面板
			RssContainer rssContainer=new RssContainer(response);
			//添加到页面
			RootPanel.get().add(rssContainer);
		}
		
	}
	/**
	 * Rss内容显示面板
	 */
	class RssContainer extends Composite{
		VerticalSplitPanel vsPanel;
		VerticalPanel vPanel;
		NamedFrame contentFrame;
		HTML html;
		String title;
		String url;
		public RssContainer(Response response){
			vsPanel=new VerticalSplitPanel();
			vPanel=new VerticalPanel();
			contentFrame=new NamedFrame("content");
			
			Document doc=XMLParser.parse(response.getText());
			XMLParser.removeWhitespace(doc);
			NodeList elements=doc.getElementsByTagName("item");
			//遍历item,获取标题与url地址
			for(int i=0;i<elements.getLength()&&i<10;i++){
				Node element=elements.item(i);
				Node titleElement=element.getFirstChild();
				Node urlElement=titleElement.getNextSibling();
				
				title=titleElement.getFirstChild().getNodeValue();
				url=urlElement.getFirstChild().getNodeValue();
				html=new HTML("<a href=\""+url+"\" target=content>"+(i+1)+"."+title+"</a>");
				vPanel.add(html);
			}
			
			vPanel.add(contentFrame);
			vPanel.setStyleName("demo-VerticalPanel");
			
			contentFrame.setSize("400px", "500px");
			vsPanel.setTopWidget(vPanel);
			vsPanel.setBottomWidget(contentFrame);
			vsPanel.setSize("400px", "600px");
			vsPanel.setSplitPosition("100px");
			
			initWidget(vsPanel);
		}
	}
}




  • 大小: 46.7 KB
分享到:
评论
1 楼 java-007 2010-03-03  
   

相关推荐

    GWT发送HTTP请求简明教程

    1. 实例化`RequestBuilder`,指定请求类型(如`RequestBuilder.GET`或`RequestBuilder.POST`)和请求的URL: ```java RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url); ``` 2. 对于POST请求...

    GWT中的xmlHttpRequest

    requestBuilder.setHeader("Accept", "application/json"); try { requestBuilder.sendRequest(null, new RequestCallback() { @Override public void onResponseReceived(Request request, Response response) ...

    GWT实现文件上传文件上传

    2. **处理onChange事件**:当用户选择文件后,获取FileUpload控件中的FormData,并封装成RequestBuilder对象。 3. **发送文件到服务器**:使用GWT的RequestBuilder向服务器发送POST请求,请求体包含文件数据。 4. ...

    androidhttp上传实现

    在实际开发中,你可能还需要处理更多细节,如错误处理、进度显示、网络状态检查等。此外,为了提高用户体验,可以考虑使用后台服务或IntentService来处理上传,避免阻塞主线程。 通过以上步骤,你应该能够实现一个...

    Android-KotlinDSLhttp客户端okhttp前端

    在实际项目中,我们可能还需要处理更复杂的情况,比如错误处理、缓存策略、多平台兼容等。Kotlin DSL可以帮助我们以优雅的方式解决这些问题,让代码更加整洁和易于维护。 最后,关于`rybalkinsd-kohttp-988d735`这...

    HttpClient4.3教程共51页.pdf.zip

    4. **请求构建器**:HttpClient提供了RequestBuilder类,方便用户构建复杂的HTTP请求,包括添加请求头、设置主体内容、指定请求方法等。 5. **响应处理**:HttpClient 4.3提供了ResponseHandler接口,用户可以...

    async-http-client-2.0.13.zip

    1. **异步模式**:AHC的主要特点是其异步模式,通过非阻塞I/O,使得客户端在等待服务器响应时可以处理其他任务,显著提升了系统吞吐量。 2. **HTTP/2支持**:除了HTTP/1.1,AHC还支持HTTP/2协议,包括多路复用,...

    安卓 android 原生人脸识别Camera和Camera2的代码示例demo

    在Camera API中,我们可以通过`Camera.Face`类来处理人脸识别。首先,我们需要设置`Camera.Parameters`,开启人脸识别功能: ```java Camera.Parameters parameters = camera.getParameters(); parameters....

    NoHttpDemo源码.rar

    在阅读源码时,注意查看RequestBuilder的使用、请求的发起与回调处理、网络错误的捕获以及缓存策略的设置等关键部分,这将有助于提升网络编程能力。同时,根据需求调整和扩展NoHttp的功能,以满足项目的特定需求。

    GWT SimpleXML, XML解析

    GWT的`RequestCallback`接口提供了错误处理方法,SimpleXML的异常处理则主要是处理XML格式不正确的情况。 6. **性能优化**:由于GWT编译后的JavaScript代码需要在客户端执行,所以解析大量XML数据可能会对性能产生...

    Fresco使用示例,FrescoDemo

    它专为处理大量网络图像而设计,具有强大的缓存机制和高效的内存管理,能够有效地避免内存抖动,提高应用性能。在“Fresco使用示例,FrescoDemo”中,我们可以深入理解并实践Fresco的基本用法和特性。 1. **Fresco...

    httpcomponents-core-4.4.4-bin.tar.gz

    RequestBuilder允许设置URI、方法、请求头、实体等,而ResponseHandler则可以根据实际需求解析响应内容,如转换为字符串、XML、JSON等格式。 四、认证与安全 在HTTPComponents Core 4.4.4中,支持多种身份验证机制...

    GWT通信机制初探

    总结来说,本文可能会涵盖GWT的通信机制,包括RequestBuilder和AsyncCallback的使用,以及如何将GXT与Spring框架集成,利用Spring的功能如依赖注入、服务代理、安全控制和数据持久化来增强GWT应用的功能和性能。...

    camera测试demo

    3. **请求模板**:使用RequestBuilder设置捕获参数,如图像格式、质量、快门速度等。 4. **对焦与测光**:实现自动对焦和测光功能,以及手动控制。 5. **图像处理**:利用YUV或RAW数据进行图像处理,如滤镜效果、HDR...

    GWT中级教程

    理解何时选择RPC,何时使用RequestBuilder,以及如何处理数据序列化和错误处理,是提升应用交互体验的关键。 5. **本地存储与持久化** GWT支持HTML5的本地存储,如localStorage和sessionStorage,这使得在离线环境...

    封装好的okhttp的工具类

    2. **请求构建器(RequestBuilder)**:对于GET和POST请求,OkHttpUtil可能会提供如`get(String url)`和`post(String url, Map, String&gt; params)`这样的方法。它们内部会使用Request.Builder构建请求,设置URL、Header...

    HttpHelper2.1.10 万能框架 源码

    - `RequestBuilder`:用于构建HTTP请求,包括设置URL、方法、头部信息、请求体等内容,使得请求配置更加灵活。 - `ResponseHandler`:解析并处理HTTP响应,支持多种数据格式(如JSON、XML)的解析,方便数据提取。...

    grails-jersey-request-builder:RequestBuilder是Jersey客户端库的便捷包装

    泽西岛请求生成器插件 请参阅的文档。

    httpcomponents-client-4.5.5-bin.zip

    6. **请求和响应处理**:提供丰富的RequestBuilder和ResponseHandler接口,方便自定义请求参数和响应处理逻辑。 7. **实体处理**:支持多种数据格式的传输,如JSON、XML、表单数据等,通过EntityUtils和HttpEntity...

    frescoSample来自fasebook图片缓存框架最牛

    Fresco 是一个强大的开源图像处理库,由 Facebook 推出,专为 Android 应用设计。这个名为 "frescoSample" 的压缩包很可能是包含了演示如何使用 Fresco 的示例代码和资源。让我们深入探讨一下 Fresco 图片缓存框架的...

Global site tag (gtag.js) - Google Analytics