JAVA实现对服务器的访问的两种方法

来源:互联网 发布:java的运行环境 编辑:程序博客网 时间:2024/05/01 21:25

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进行传输。

0 0
原创粉丝点击