您的位置:首页 > 编程语言 > Java开发

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进行传输。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: