博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA实现对服务器的访问的两种方法
阅读量:4557 次
发布时间:2019-06-08

本文共 2603 字,大约阅读时间需要 8 分钟。

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
p2=newArrayList
(); 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进行传输。

转载于:https://www.cnblogs.com/bless2016/p/4531531.html

你可能感兴趣的文章
[git]git的分支管理
查看>>
针对NSString字符串的排序
查看>>
(五)myBatis架构以及SQlSessionFactory,SqlSession,通过代理执行crud源码分析---待更...
查看>>
关于IE6中做兼容的那点事。
查看>>
Swift创建空数组
查看>>
剑指offer(32)把数组排成最小的数
查看>>
特殊的夸赞 对女生的夸奖
查看>>
非Markdown - Test
查看>>
1044 火星数字 (20 分)
查看>>
【题解】Luogu P1204 [USACO1.2]挤牛奶Milking Cows
查看>>
挂载云硬盘后的分区、格式化与挂载
查看>>
android:shape的使用
查看>>
Android自定义UI
查看>>
spring boot整合quartz实现多个定时任务
查看>>
db powerdesign CDM、LDM、PDM、OOM的区别
查看>>
ISE和modelsim的配合
查看>>
通过用户模型,对数据库进行增删改查操作。
查看>>
群发邮件功能的完善
查看>>
gradle多项目构建及依赖
查看>>
linux, windows 文件传输的问题
查看>>