JAVA实现对服务器的访问的两种方法
2015-02-07 21:36
197 查看
JAVA实现对服务器的访问:
-GET
HttpURLConnection HttpClient
POST
HttpClient为例
GET
一、 HttpURLConnection
步骤:
1.指定数据的网路路径
URL url=new URL(“http://localhost:8080/..../....”);
2.打开连接,返回一个HttpURLConnection类型对象,对返回对象进行强转。
HttpURLConnectionconn=(HttpURLConnection)url.openConnection();
3.设置连接参数
conn.setRequestMethod(“SET”);//这里有SET和GET两种方法。见下一篇博客。 conn.setReadTimeout(5000);//设置响应时间,不然程序在等不到返回值时会一致等待。 conn.setDoInput(true);//打开读取的管道 conn.setDoOutput(true);//打开网服务器写数据的通道。良好的变成习惯建议两个都设置好。
4.判断网络请求返回码是否可以访问
if(conn.getResponseCode==200) { //如果返回码==200,执行下载操作 //获得读取流 InputStream is=conn.getInputStream(); //然后可以写入内存, ByteArrayOutputStream baos=newByteArrayOutputStream(); //也可以写入本地 FileOutputStream fos=new FileOutputStream(“本地地址”); byte b[]=new byte[]; int a=0;//a为写入b[]数组的长度。 while((a=is.read(b))!=-1)//假设以-1结尾。 { fos.write(b,0,a); fos.flush(); } Sytem.out.println(“下载成功!”); }
二、 HttpClient(第三方库)
由于步骤类似,下面加入端口回调和线程实现步骤:
public interface CallBack{ public void load(byte b[])’ } public static void getMessage(final String path,final CallBackcallback){ new Thread(new Runnable(){ public void run(){ HttpClient client=newDefaultClient(); //获得get请求 HttpGet get=new HttpGet(path); //执行get请求,返回响应对象 HttpResponseres=client.execute(get); //判断网络返回码 if(res.getStatusLine().getStatusCode()==200){ //获得实体对象 HttpEntityentity=res.getEntity(); //返回字节数组 byteb[]=EntityUtils.toByteArray(entity); callback.load(b); } } }).start(); } public static void main(String args[]) { String path=””; HttpUtils uilt=newHttpUtils(); util.getMessage(path,newCallBack(){ public void load(byteb[]) { //获取字节流 } }); }
POST
public staticvoid getStringPost(final String path,fina CallBack callback) { new Thread(new Runnable(){ HttpClient client =newDefaultHttpClient(); HttpPost post=new HttpPost(path); //封装键值对 NameValuePair p1=new BasicNameValuePair(“username”,”admin”); NameValuePair p2=new BasicNameValuePair(“password”,”123”); List<NameValuePair> p2=newArrayList<NameValuePair>(); list.add(p1); list.add(p2); //将集合转成HttpEntity对象 HttpEntity entity=new UrlEncodedFormEntity(list); post.setEntity(entity); //执行post HttpResponse res=client.execute(post); //判断返回码 if(res.getStatusLine().getStatusCode()==200) { // 获得字节流信息 //调用接口 } }).start(); }
GET请求传值时候会在URL里显示。
POST请求将数据封装到NameValuePair里,再把NameValuePair传入集合,封装成entity进行传输。
相关文章推荐
- JAVA实现对服务器的访问的两种方法
- 交换机环境下实现同vlan不能互通却都能访问服务器的两种方法
- java实现多线程的两种方法
- JAVA中实现四舍五入的两种方法
- Java 多线程的两种简单实现方法
- java实现多线程的两种方法
- java创建多线程的两种方法(继承Thread类/实现Runnable接口)
- java 卖票程序的两种实现方法
- 判断URL是否能够访问JS和java两种方法
- C#实现HTTP协议迷你服务器(两种方法)
- 蛇形矩阵的两种实现方法(java版本)
- java实现多线程有两种方法
- java反射中两种方法的不同(反射能否实现对类的私有方法的调用)
- C# 两种方法实现HTTP协议迷你服务器
- java实现多线程的两种方法的比较
- 在DWR中实现直接获取一个JAVA类的返回值的两种方法
- JAVA的线程对象实现的两种方法
- C# 两种方法实现HTTP协议迷你服务器
- C# 两种方法实现HTTP协议迷你服务器
- JAVA线程之一:实现一个线程的两种方法