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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值