如何在使用eclipse进行真机测试中使用httpclient 进行接口测试

okhttp在eclipse上使用找不到okhttpclient类是怎么回事_百度知道
okhttp在eclipse上使用找不到okhttpclient类是怎么回事
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
自古英雄耐寂寞
来自电脑网络类芝麻团
自古英雄耐寂寞
采纳数:671
获赞数:488
擅长:暂未定制
参与团队:
HttpClient已经废弃了,网络访问应该用HttpUrlConnection,或者使用Volley、OkHttp之类的框架
采纳数:121
获赞数:1299
擅长:暂未定制
肯定找不到啊,这不是原生的类,是OKHttp框架的类,你需要导入OKHttp的jar包才能用
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。使用HttpUnit进行集成测试
作者:用户
本文讲的是使用HttpUnit进行集成测试,
HttpUnit是一个集成测试工具,主要关注Web应用的测试,提供的帮助类让测试者可以通过Java类和服务器进行交互,并且将服务器端的响应当作文本或者DOM对象进行处理。HttpUnit还提供
HttpUnit是一个集成测试工具,主要关注Web应用的测试,提供的帮助类让测试者可以通过Java类和服务器进行交互,并且将服务器端的响应当作文本或者DOM对象进行处理。HttpUnit还提供了一个模拟Servlet容器,让你可以不需要发布Servlet,就可以对Servlet的内部代码进行测试。本文中作者将详细的介绍如何使用HttpUnit提供的类完成集成测试。
HttpUnit简介
HttpUnit是SourceForge下面的一个开源项目,它是基于JUnit的一个测试框架,主要关注于测试Web应用,解决使用JUnit框架无法对远程Web内容进行测试的弊端。当前的最新版本是1.5.4。为了让HtpUnit正常运行,你应该安装JDK1.3.1或者以上版本。
HttpUnit通过模拟浏览器的行为,处理页面框架(frames),cookies,页面跳转(redirects)等。通过HttpUnit提供的功能,你可以和服务器端进行信息交互,将返回的网页内容作为普通文本、XML Dom对象或者是作为链接、页面框架、图像、表单、表格等的集合进行处理,然后使用JUnit框架进行测试,还可以导向一个新的页面,然后进行新页面的处理,这个功能使你可以处理一组在一个操作链中的页面。
和其他商业工具的对比
商业工具一般使用记录、回放的功能来实现测试,但是这里有个缺陷,就是当页面设计被修改以后,这些被记录的行为就不能重用了,需要重新录制才能继续测试。
举个例子:如果页面上有个元素最先的设计是采用单选框,这个时候你开始测试,那么这些工具记录的就是你的单项选择动作,但是如果你的设计发生了变化,比如说我改成了下拉选择,或者使用文本框接受用户输入,这时候,你以前录制的测试过程就无效了,必须要重新录制。
而HttpUnit因为关注点是这些控件的内容,所以不管你的外在表现形式如何变化,都不影响你已确定测试的可重用性。
更多的关于httpunit的信息请访问httpunit的主页http://httpunit.sourceforge.net
作者的演示环境
系统平台:Windows 2000 Server
应用服务器:深圳金蝶的apusic3.0
工具: eclipse 2.1.2
HttpUnit安装、环境配置
1. 到HttpUnit的主页http://httpunit.sourceforge.net下载最新的包文件,当前的最新版本是1.5.4。
2. 将下载的Zip包解压缩到c:/httpunit(后面将使用%httpunit_home%引用该目录)
作者的演示程序都是在eclipse中开发、执行的,所以环境配置都是以eclipse为例,如果你使用其他的开发工具,请根据这些步骤进行环境配置。
启动eclipse,建立一个java工程
将%httpunit_home%/lib/*. %httpunit_home%/jars/*.jar加入到该java工程的Java build Path变量中
如何使用httpunit处理页面的内容
WebConversation类是HttpUnit框架中最重要的类,它用于模拟浏览器的行为。其他几个重要的类是:
WebRequest类,模仿客户请求,通过它可以向服务器发送信息。
WebResponse类,模拟浏览器获取服务器端的响应信息。
获取指定页面的内容
直接获取页面内容
System.out.println("直接获取网页内容:");
//建立一个WebConversation实例
WebConversation wc = new WebConversation();
//向指定的URL发出请求,获取响应
WebResponse wr = wc.getResponse( "http://localhost:6888/HelloWorld." );
//用getText方法获取相应的全部内容
//用System.out.println将获取的内容打印在控制台上
System.out.println( wr.getText() );
通过Get方法访问页面并且加入参数
System.out.println("向服务器发送数据,然后获取网页内容:");
//建立一个WebConversation实例
WebConversation wc = new WebConversation();
//向指定的URL发出请求
WebRequest req = new GetMethodWebRequest( "http://localhost:6888/HelloWorld.jsp" );
//给请求加上参数
req.setParameter("username","姓名");
//获取响应对象
WebResponse resp = wc.getResponse( req );
//用getText方法获取相应的全部内容
//用System.out.println将获取的内容打印在控制台上
System.out.println( resp.getText() );
4.1.3 通过Post方法访问页面并且加入参数
System.out.println("使用Post方式向服务器发送数据,然后获取网页内容:");
//建立一个WebConversation实例
WebConversation wc = new WebConversation();
//向指定的URL发出请求
WebRequest req = new PostMethodWebRequest( "http://localhost:6888/HelloWorld.jsp" );
//给请求加上参数
req.setParameter("username","姓名");
//获取响应对象
WebResponse resp = wc.getResponse( req );
//用getText方法获取相应的全部内容
//用System.out.println将获取的内容打印在控制台上
System.out.println( resp.getText() );
大家关注一下上面代码中打了下划线的两处内容,应该可以看到,使用Get、Post方法访问页面的区别就是使用的请求对象不同。
处理页面中的链接
这里的演示是找到页面中的某一个链接,然后模拟用户的单机行为,获得它指向文件的内容。比如在我的页面HelloWorld.html中有一个链接,它显示的内容是TestLink,它指向我另一个页面TestLink.htm. TestLink.htm里面只显示TestLink.html几个字符。
下面是处理代码:
System.out.println("获取页面中链接指向页面的内容:");
//建立一个WebConversation实例
WebConversation wc = new WebConversation();
//获取响应对象
WebResponse
resp = wc.getResponse( "http://localhost:6888/HelloWorld.html" );
//获得页面链接对象
link = resp.getLinkWith( "TestLink" );
//模拟用户单击事件
link.click();
//获得当前的响应对象
WebResponse
nextLink = wc.getCurrentPage();
//用getText方法获取相应的全部内容
//用System.out.println将获取的内容打印在控制台上
System.out.println( nextLink.getText() );
处理页面中的表格
表格是用来控制页面显示的常规对象,在HttpUnit中使用数组来处理页面中的多个表格,你可以用resp.getTables()方法获取页面所有的表格对象。他们依照出现在页面中的顺序保存在一个数组里面。
[注意] Java中数组下标是从0开始的,所以取第一个表格应该是resp.getTables()[0],其他以此类推。
下面的例子演示如何从页面中取出第一个表格的内容并且将他们循环显示出来:
System.out.println("获取页面中表格的内容:");
//建立一个WebConversation实例
WebConversation wc = new WebConversation();
//获取响应对象
WebResponse
resp = wc.getResponse( "http://localhost:6888/HelloWorld.html" );
//获得对应的表格对象
WebTable webTable = resp.getTables()[0];
//将表格对象的内容传递给字符串数组
String[][] datas = webTable.asText();
//循环显示表格内容
int i = 0 ,j = 0;
int m = datas[0].
int n = datas.
while (i&n){
while(j&m){
System.out.println("表格中第"+(i+1)+"行第"+
(j+1)+"列的内容是:"+datas[i][j]);
处理页面中的表单
表单是用来接受用户输入,也可以向用户显示用户已输入信息(如需要用户修改数据时,通常会显示他以前输入过的信息),在HttpUnit中使用数组来处理页面中的多个表单,你可以用resp.getForms()方法获取页面所有的表单对象。他们依照出现在页面中的顺序保存在一个数组里面。
[注意] Java中数组下标是从0开始的,所以取第一个表单应该是resp.getForms()[0],其他以此类推。
下面的例子演示如何从页面中取出第一个表单的内容并且将他们循环显示出来:
System.out.println("获取页面中表单的内容:");
//建立一个WebConversation实例
WebConversation wc = new WebConversation();
//获取响应对象
WebResponse
resp = wc.getResponse( "http://localhost:6888/HelloWorld.html" );
//获得对应的表单对象
WebForm webForm = resp.getForms()[0];
//获得表单中所有控件的名字
String[] pNames = webForm.getParameterNames();
int i = 0;
int m = pNames.
//循环显示表单中所有控件的内容
while(i&m){
System.out.println("第"+(i+1)+"个控件的名字是"+pNames[i]+
",里面的内容是"+webForm.getParameterValue(pNames[i]));
如何使用httpunit进行测试
对页面内容进行测试
httpunit中的这部分测试完全采用了JUnit的测试方法,即直接将你期望的结果和页面中的输出内容进行比较。不过这里的测试就简单多了,只是字符串和字符串的比较。
比如你期望中的页面显示是中有一个表格,它是页面中的第一个表格,而且他的第一行第一列的数据应该是显示username,那么你可以使用下面的代码进行自动化测试:
System.out.println("获取页面中表格的内容并且进行测试:");
//建立一个WebConversation实例
WebConversation wc = new WebConversation();
//获取响应对象
WebResponse
resp = wc.getResponse( "http://localhost:6888/TableTest.html" );
//获得对应的表格对象
WebTable webTable = resp.getTables()[0];
//将表格对象的内容传递给字符串数组
String[][] datas = webTable.asText();
//对表格内容进行测试
String expect = "中文";
Assert.assertEquals(expect,datas[0][0]);
对Servlet进行测试
除了对页面内容进行测试外,有时候(比如开发复杂的Servlets的时候),你需要对Servlet本身的代码块进行测试,这时候你可以选择HttpUnit,它可以提供一个模拟的Servlet容器,让你的Servlet代码不需要发布到Servlet容器(如tomcat)就可以直接测试。
使用httpunit测试Servlet时,请创建一个ServletRunner的实例,他负责模拟Servlet容器环境。如果你只是测试一个Servlet,你可以直接使用registerServlet方法注册这个Servlet,如果需要配置多个Servlet,你可以编写自己的web.xml,然后在初始化ServletRunner的时候将它的位置作为参数传给ServletRunner的构造器。
在测试Servlet时,应该记得使用ServletUnitClient类作为客户端,他和前面用过的WebConversation差不多,都继承自WebClient,所以他们的调用方式基本一致。要注意的差别是,在使用ServletUnitClient时,他会忽略URL中的主机地址信息,而是直接指向他的ServletRunner实现的模拟环境。
本实例只是演示如何简单的访问Servlet并且获取他的输出信息,例子中的Servlet在接到用户请求的时候只是返回一串简单的字符串:Hello World!.
1. Servlet的代码如下:
public class MyServlet extends HttpServlet {
public void service(HttpServletRequest req, HttpServletResponse resp)
throws IOException
PrintWriter out = resp.getWriter();
//向浏览器中写一个字符串Hello World!
out.println("Hello World!");
out.close();
2. 测试的调用代码如下:
//创建Servlet的运行环境
ServletRunner sr = new ServletRunner();
//向环境中注册Servlet
sr.registerServlet( "myServlet", MyServlet.class.getName() );
//创建访问Servlet的客户端
ServletUnitClient sc = sr.newClient();
//发送请求
WebRequest request
= new GetMethodWebRequest( "http://localhost/myServlet" );
//获得模拟服务器的信息
WebResponse response = sc.getResponse( request );
//将获得的结果打印到控制台上
System.out.println(response.getText());
测试Servlet的内部行为
对于开发者来说,仅仅测试请求和返回信息是不够的,所以HttpUnit提供的ServletRunner模拟器可以让你对被调用Servlet内部的行为进行测试。和简单测试中不同,这里使用了InvocationContext获得该Servlet的环境,然后你可以通过InvocationContext对象针对request、response等对象或者是该Servlet的内部行为(非服务方法)进行操作。
下面的代码演示了如何使用HttpUnit模拟Servlet容器,并且通过InvocationContext对象,测试Servlet内部行为的大部分工作,比如控制request、session、response等。
//创建Servlet的运行环境
ServletRunner sr = new ServletRunner();
//向环境中注册Servlet
sr.registerServlet( "InternalServlet", InternalServlet.class.getName() );
//创建访问Servlet的客户端
ServletUnitClient sc = sr.newClient();
//发送请求
WebRequest request
= new GetMethodWebRequest( "http://localhost/InternalServlet" );
request.setParameter("pwd","pwd");
//获得该请求的上下文环境
InvocationContext ic = sc.newInvocation( request );
//调用Servlet的非服务方法
InternalServlet is = (InternalServlet)ic.getServlet();
is.myMethod();
//直接通过上下文获得request对象
System.out.println("request中获取的内容:"+ic.getRequest().getParameter("pwd"));
//直接通过上下文获得response对象,并且向客户端输出信息
ic.getResponse().getWriter().write("haha");
//直接通过上下文获得session对象,控制session对象
//给session赋值
ic.getRequest().getSession().setAttribute("username","timeson");
//获取session的值
System.out.println("session中的值:"+ic.getRequest().getSession().getAttribute("username"));
//使用客户端获取返回信息,并且打印出来
WebResponse response = ic.getServletResponse();
System.out.println(response.getText());
在测试Servlet的之前,你必须通过InvocationContext完成Servlet中的service方法中完成的工作,因为通过newInvocation方法获取InvocationContext实例的时候该方法并没有被调用。
本文中,作者详细的演示和介绍了如何使用HttpUnit提供的类来进行集成测试,主要实现以下操作:
模拟用户行为向服务器发送请求,传递参数
模拟用户接受服务器的响应信息,并且通过辅助类分析这些响应信息,结合JUnit框架进行测试
使用HttpUnit提供的模拟Servler容器,测试开发中的Servlet的内部行为
HttpUnit帮助
http://httpunit.sourceforge.net
http://junit.org/index.htm
以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索java
,以便于您获取更多的相关知识。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
40+云计算产品,6个月免费体验
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
云服务器9.9元/月,大学必备
云栖社区(yq.aliyun.com)为您免费提供相关信息,包括
,所有相关内容均不代表云栖社区的意见!C语言 c++ php mysql nginx linux lnmp lamp lanmp memcache redis 面试 笔记 ppt 设计模式 问题 远程连接 草榴 草榴社区 caoliu
webservice:&& &就是应用程序之间跨语言的调用&& &wwww.webxml.com.cn&& &1.xml&& &2.&& &wsdl: webservice description language web服务描述语言&& &&& &通过xml格式说明调用的地址方法如何调用,可以看错webservice的说明书&& &&& &3.soap simple object access protoacl (简单对象访问协议) && &&& &限定了xml的格式&& &&& &soap 在http(因为有请求体,所以必须是post请求)的基础上传输xml数据&& &&& &&& &请求和响应的xml 的格式如:&& &&Envelop&&& &&& &&& &&& &&& &&& &&& &&& &&body&&& &&& &&& &&& &&& &&& &&& &&& &//....&& &&& &&& &&& &&& &&& &&& &&& &&/body&&& &&& &&& &&& &&& &&& &&& &&/Envelop&&& &&& &&& &&& &operation name:服务提供的方法&& &&& &&& &&& &&& &&& &&& &静态方法不能发布为外部服务&& &&& &运用jkd自带的代码生成访问服务器的客户端代码&& &E:/wsimort -s . http://test.cm/?wsdl&& &&& &我们可以把webservice看做是web服务器上的一个应用,web服务器是webservice的一个容器&& &&& &函数的参数在 http://test.cm/?xsd=1&& &&& &JAX-WS是指 java api for xml -WebService&& &&& &//测试 WebService服务的 explorer&& &Web Service Explorer 可以显示返回的xml格式&& &&& &targetNamespace 默认为倒置的包名&& &客户端调用WebService的方式:&& &1.通过wximport生成代码&& &2.通过客户端编程方式&& &3.通过ajax调用方式&& &4.通过 URL Connection 方式调用请求过程分析:&& &&& &1.使用get方式获取wsdl文件,称为握手&& &&& &2.使用post发出请求&& &&& &3.服务器响应成功过&& &
几种监听工具:&& &http watch&& &Web Service explorer&& &eclipse 自带工具&& TCP/IP Monitor&&&
&&& &&& 服务端代码:
package com.
import javax.jws.WebM
import javax.jws.WebP
import javax.jws.WebR
import javax.jws.WebS
import javax.xml.ws.E
* WebService
* 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
@WebService(serviceName="MyService",targetNamespace="http://www.baidu.com")
public class HelloService {
@WebMethod(operationName="AliassayHello")
@WebResult(name="myReturn")
public String sayHello(@WebParam(name="name") String name){
"hello: " +
public String sayGoodbye(String name){
"goodbye: " +
@WebMethod(exclude=true)//当前方法不被发布出去
public String sayHello2(String name){
return "hello " +
public static void main(String[] args) {
* 参数1:服务的发布地址
* 参数2:服务的实现者
会重新启动一个线程
Endpoint.publish("http://test.cm/", new HelloService());
System.out.println("Server ready...");
1.客户端调用(wximport自动生成代码 【推荐】)
package com.
public class App {
* 通过wsimport 解析wsdl生成客户端代码调用WebService服务
* @param args
public static void main(String[] args) {
// TODO Auto-generated method stub
* &service name="MyService"&
* 获得服务名称
MyService mywebService = new MyService();
* &port name="HelloServicePort" binding="tns:HelloServicePortBinding"&
HelloService hs = mywebService.getHelloServicePort();
* 调用方法
System.out.println(hs.sayGoodbye("sjk"));
System.out.println(hs.aliassayHello("sjk"));
&2.通过ajax+js+xml调用
&title&通过ajax调用WebService服务&/title&
var xhr = new ActiveXObject("Microsoft.XMLHTTP");
function sendMsg(){
var name = document.getElementById('name').
//服务的地址
var wsUrl = 'http://192.168.1.100:6789/hello';
var soap = '&soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.itcast.cn/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&' +
' &soapenv:Body& &q0:sayHello&&arg0&'+name+'&/arg0&
&/q0:sayHello& &/soapenv:Body& &/soapenv:Envelope&';
//打开连接
xhr.open('POST',wsUrl,true);
//重新设置请求头
xhr.setRequestHeader("Content-Type","text/charset=UTF-8");
//设置回调函数
xhr.onreadystatechange = _
//发送请求
xhr.send(soap);
function _back(){
if(xhr.readyState == 4){
if(xhr.status == 200){
//alert('调用Webservice成功了');
var ret = xhr.responseXML;
var msg = ret.getElementsByTagName('return')[0];
document.getElementById('showInfo').innerHTML = msg.
//alert(msg.text);
&input type="button" value="发送SOAP请求" onclick="sendMsg();"&
&input type="text" id="name"&
&div id="showInfo"&
3.URL Connection方式
import java.io.InputS
import java.io.OutputS
import java.net.HttpURLC
import java.net.URL;
* 通过UrlConnection调用Webservice服务
public class App {
public static void main(String[] args) throws Exception {
//服务的地址
URL wsUrl = new URL("http://192.168.1.100:6789/hello");
HttpURLConnection conn = (HttpURLConnection) wsUrl.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "text/charset=UTF-8");
OutputStream os = conn.getOutputStream();
String soap = "&soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:q0=\"http://ws.itcast.cn/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"&" +
"&soapenv:Body& &q0:sayHello&&arg0&aaa&/arg0&
&/q0:sayHello& &/soapenv:Body& &/soapenv:Envelope&";
os.write(soap.getBytes());
InputStream is = conn.getInputStream();
byte[] b = new byte[1024];
int len = 0;
String s = "";
while((len = is.read(b)) != -1){
String ss = new String(b,0,len,"UTF-8");
System.out.println(s);
is.close();
os.close();
conn.disconnect();
4.客户单编程方式(和第一种方式一样)
//文件名:HelloService.javaimport javax.jws.WebM
import javax.jws.WebP
import javax.jws.WebR
import javax.jws.WebS
import javax.xml.bind.annotation.XmlSeeA
import javax.xml.ws.RequestW
import javax.xml.ws.ResponseW
* This class was generated by the JAX-WS RI.
* JAX-WS RI 2.1.6 in JDK 6
* Generated source version: 2.1
@WebService(name = "HelloService", targetNamespace = "http://ws.itcast.cn/")
@XmlSeeAlso({
public interface HelloService {
* @param arg0
returns java.lang.String
@WebMethod
@WebResult(targetNamespace = "")
@RequestWrapper(localName = "sayHello", targetNamespace = "http://ws.itcast.cn/", className = "cn.itcast.ws.client.SayHello")
@ResponseWrapper(localName = "sayHelloResponse", targetNamespace = "http://ws.itcast.cn/", className = "cn.itcast.ws.client.SayHelloResponse")
public String sayHello(
@WebParam(name = "arg0", targetNamespace = "")
String arg0);
import java.net.MalformedURLE
import java.net.URL;
import javax.xml.namespace.QN
import javax.xml.ws.S
import cn.itcast.ws.wsimport.HelloS
* 通过客户端编程的方式调用Webservice服务
public class App {
public static void main(String[] args) throws Exception {
URL wsdlUrl = new URL("http://192.168.1.100:6789/hello?wsdl");
Service s = Service.create(wsdlUrl, new QName("http://ws.itcast.cn/","HelloServiceService"));
HelloService hs = s.getPort(new QName("http://ws.itcast.cn/","HelloServicePort"), HelloService.class);
String ret = hs.sayHello("zhangsan");
System.out.println(ret);
阅读(...) 评论()在Eclipse RCP插件项目里使用HttpClient,想做个模拟登录的例子,具体的想法是这样的:在一个View视图里设置一个文本框跟按钮,文本框内输入网址,点击按钮即可获取网址的Cookie,然后在视图下方设置一个文本域,展示获取到的Cookie。
代码如下。
import java.io.IOE
import java.util.L
import org.apache.http.HttpE
import org.apache.http.HttpR
import org.apache.http.ParseE
import org.apache.http.client.HttpC
import org.apache.http.client.methods.HttpG
import org.apache.http.cookie.C
import org.apache.http.impl.client.AbstractHttpC
import org.apache.http.impl.client.DefaultHttpC
import org.eclipse.jface.viewers.IStructuredContentP
import org.eclipse.jface.viewers.ITableLabelP
import org.eclipse.jface.viewers.LabelP
import org.eclipse.jface.viewers.V
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionE
import org.eclipse.swt.events.SelectionL
import org.eclipse.swt.graphics.I
import org.eclipse.swt.layout.GridD
import org.eclipse.swt.layout.GridL
import org.eclipse.swt.widgets.B
import org.eclipse.swt.widgets.C
import org.eclipse.swt.widgets.T
import org.eclipse.ui.ISharedI
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewP
public class View extends ViewPart {
public static final String ID = "HttpClientLogin.view";
private Text webT
private Text infoA
* The content provider class is responsible for providing objects to the
* view. It can wrap existing objects in adapters or simply return objects
* as-is. These objects may be sensitive to the current input of the view,
* or ignore it and always show the same content (like Task List, for
* example).
class ViewContentProvider implements IStructuredContentProvider {
public void inputChanged(Viewer v, Object oldInput, Object newInput) {
public void dispose() {
public Object[] getElements(Object parent) {
if (parent instanceof Object[]) {
return (Object[])
return new Object[0];
class ViewLabelProvider extends LabelProvider implements
ITableLabelProvider {
public String getColumnText(Object obj, int index) {
return getText(obj);
public Image getColumnImage(Object obj, int index) {
return getImage(obj);
public Image getImage(Object obj) {
return PlatformUI.getWorkbench().getSharedImages()
.getImage(ISharedImages.IMG_OBJ_ELEMENT);
* This is a callback that will allow us to create the viewer and initialize
&span style="color:#cc6600;"&public void createPartControl(Composite parent) {
Composite comp = new Composite(parent, SWT.NONE);
comp.setLayout(new GridLayout(2, false));
webText = new Text(comp, SWT.BORDER);
webText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Button checkCookieButton = new Button(comp, SWT.BORDER);
checkCookieButton.setText("查询");
GridData grid = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
grid.horizontalSpan = 2;
Text infoArea = new Text(comp, SWT.V_SCROLL);
infoArea.setLayoutData(new GridData(GridData.FILL_BOTH));
infoArea.setSize(100, 50);
checkCookieButton.addSelectionListener(new SelectionListener() {
public void widgetSelected(SelectionEvent e) {
// TODO 自动生成的方法存根
} catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
public void widgetDefaultSelected(SelectionEvent e) {
// TODO 自动生成的方法存根
&span style="color:#cc6600;"&public void check() throws ParseException, IOException{
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(webText.getText());
HttpResponse response = httpClient.execute(httpget);
HttpEntity entity = response.getEntity();
//System.out.println("executing request" + httpget.getURI());
List&Cookie& cookies = ((AbstractHttpClient) httpClient)
.getCookieStore().getCookies();
for (Cookie cookie : cookies){
infoArea.setText(cookie.getValue());
// System.out.println(cookie.getName() + "=" + cookie.getValue()
// + ";");
//System.out.println(cookie);
// 除了HttpClient自带的Cookie,自己还可以增加自定义的Cookie
// 增加代码...
} finally {
httpClient.getConnectionManager().shutdown();
* Passing the focus request to the viewer's control.
public void setFocus() {
}但是问题来了,报这个错:“java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient”,这个错误应该是jar包没导对,但是不在插件项目里用这些jar包却能用。具体的错误如下:
15:10:54.053 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_13
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
Framework arguments:
-application HttpClientLogin.application
Command-line arguments:
-application HttpClientLogin.application -data D:\Workspaces/../runtime-HttpClientLogin.application -dev file:D:/Workspaces/.metadata/.plugins/org.eclipse.pde.core/HttpClientLogin.application/dev.properties -os win32 -ws win32 -arch x86 -consoleLog
!ENTRY org.eclipse.equinox.registry 4 1
15:10:59.730
!MESSAGE Unable to create view ID HttpClientLogin.view: Plug-in "HttpClientLogin" was unable to instantiate class "httpclientlogin.View".
java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.newInstance0(Class.java:326)
at java.lang.Class.newInstance(Class.java:308)
at org.eclipse.core.internal.registry.osgi.RegistryStrategyOSGI.createExecutableExtension(RegistryStrategyOSGI.java:184)
at org.eclipse.core.internal.registry.ExtensionRegistry.createExecutableExtension(ExtensionRegistry.java:905)
at org.eclipse.core.internal.registry.ConfigurationElement.createExecutableExtension(ConfigurationElement.java:243)
at org.eclipse.core.internal.registry.ConfigurationElementHandle.createExecutableExtension(ConfigurationElementHandle.java:55)
at org.eclipse.ui.internal.WorkbenchPlugin.createExtension(WorkbenchPlugin.java:260)
at org.eclipse.ui.internal.registry.ViewDescriptor.createView(ViewDescriptor.java:63)
at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:327)
at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313)
at org.eclipse.ui.internal.ViewPane.setVisible(ViewPane.java:534)
at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1245)
at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1198)
at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1597)
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:643)
at org.eclipse.ui.internal.PartStack.createControl(PartStack.java:570)
at org.eclipse.ui.internal.PartSashContainer.createControl(PartSashContainer.java:568)
at org.eclipse.ui.internal.PerspectiveHelper.activate(PerspectiveHelper.java:272)
at org.eclipse.ui.internal.Perspective.onActivate(Perspective.java:981)
at org.eclipse.ui.internal.WorkbenchPage.onActivate(WorkbenchPage.java:2714)
at org.eclipse.ui.internal.WorkbenchWindow$28.run(WorkbenchWindow.java:3030)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchWindow.setActivePage(WorkbenchWindow.java:3011)
at org.eclipse.ui.internal.WorkbenchWindow.busyOpenPage(WorkbenchWindow.java:799)
at org.eclipse.ui.internal.Workbench$23.runWithException(Workbench.java:1229)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4140)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1600)
at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180)
at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:4683)
at org.eclipse.ui.internal.StartupThreading.runWithoutExceptions(StartupThreading.java:94)
at org.eclipse.ui.internal.Workbench.init(Workbench.java:1595)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2628)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at httpclientlogin.Application.start(Application.java:20)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.HttpClient
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 67 more
大神们来看看到底怎么弄,是不是插件项目还要导入其他包还是什么别的原因,小弟感激不尽啊!
eclipse上httpclient作废的解决办法
解决Android 4.0以后,httpclient被废弃的问题。
安装jadEclipse插件,导入HttpClient包
安装jadEclipse插件,导入HttpClient包
Eclipse利用HttpClient 写post和get连接到后台
文件目录如下:
第一个包代码如下:
package cn.itcast.
import cn.itcast.login.service.DataServi...
使用rcp自带console输出信息
习惯了使用Eclipse的console来调试程序,当然在Rcp程序中如果能用console来输出用户关系的log信息也是不错的选择,要使用Rcp自带的console,首先是在plugin.xml中扩...
关于httpClient系列包找不到问题
好久没更新博客了,最近在学习视频的知识遇到瓶颈了。。。。。。昨天有个网友问了我这么一个问题:他之前的过程里面是有httpClient系列的jar包,但是当他升级到最新的studio在编译时报了没有找到...
HTTPClient
写一个Http类,能更好的了解HTTP
在这里用 socket 模拟 get, post 请求,并得到结果,其中也加了 head 请求,用 php 自带的函数 get_heade...
http协议的接口一般会有GET请求和POST请求两种,下面总结一下自己常用到的几种调用方式:第一种:httpclient 发送POST请求CloseableHttpClient httpclient...
两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包的交换,并且也很耗时间。Http连接需要的三次握手开销很大,这一开销对于比较小的http消息来说更大。但是如果我们直接使用已经建立好的http...
关于证书的生成,请参考:双向认证,证书生成方法
方法一:数据以json的格式发送
public void testHttps(){
最近的项目需要使用HTTP Client 从网上下载下载图片,这篇文章就分析一下如何使用这个功能吧。最后包含一个完整的例子,涵盖如何读取数据,生成图片并显示。...
没有更多推荐了,

我要回帖

更多关于 eclipse创建接口 的文章

 

随机推荐