网络协议之访问服务端的三种方式

大家好,今天给大家带来的是网络协议的内容,主要介绍的是访问服务端的三种方式,总结来说是get,post,httpclient这三种方式,只要你能熟练掌握其中的一两种,对于访问服务端取数据的工作就会轻而易举的完成。好了,废话不多说,迫不及待的想开讲这篇内容了。

1.第一种方式:Get方式。

/**
  * get方法,网址的形式

  // http://192.168.32.181:8080/aa/video_login?account=aa&pwd=11
  // webLogin=http://192.168.32.181:8080/aa/video_login

 很清楚的看到get请求的网站是很有规律的,它主要是靠参数形式访问服务端,获取数据,不如说,这里有account,pwd,这两个参数是我们可以定义的,

我们可以充分利用这点,获取服务端的数据
  */
 public static InputStream byGet(String account, String pwd, String webLogin)
   throws Exception {
  System.out.println("GET请求");
  //创建StringBuffer连接器
  StringBuilder sbStr = new StringBuilder();

//首先连接weblogin网址 webLogin=http://192.168.32.181:8080/aa/video_login
  sbStr.append(webLogin);
  sbStr.append("?account=");
  //连接传过来的参数,因为传过来的是中文,编码,URLEncder.encode
  sbStr.append(URLEncoder.encode(account, "utf-8"));
  sbStr.append("&pwd=");

//连接客户端传过来的pwd值
  sbStr.append(pwd);
  //创建网络协议对象,参数是字符串
  URL url = new URL(sbStr.toString());
  //打开连接
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();

//设置连接超时时间
  conn.setConnectTimeout(5000);
  System.out.println(conn);
  //设置请求方式,这里是get方式
  conn.setRequestMethod("GET");
 //getResponseCose请求码,HttpURLConnection.HTTP_OK表示200,当请求码为200时,是连网成功
  if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { 
   //返回的是流,服务端和客户端是以流方式传递的
   return conn.getInputStream();
  }

  return null;
 }

2.第二种方式:Post方式

/**
  * post:请求体
  * 通过Post请求的步骤:
  *  1. 设置请求的Url,开辟一个连接 : http://localhost:8080/web/video_login
  * 2. 设置请求头 请求的内容类型: "Content-Type", "application/x-www-form-urlencoded"
  *    请求体的长度 :Content-Length
  * 3. 设置请求体 :account=android&pwd=1234
  * 4. 在把请求体附送到服务端

     5. 取返回的结果
  *
  */
 public static InputStream byPost(String account, String pwd, String webLogin)
   throws Exception {

  System.out.println("POST请求");
 //1.设置请求的URL,开辟一个连接
  URL url = new URL(webLogin);
  HttpURLConnection conn = (HttpURLConnection) url.openConnection();

//设置请求方式,连接超时时间

  conn.setRequestMethod("POST");
  conn.setConnectTimeout(5000);

 //2.设置请求表头方式,是以form表单提交的
  conn.setRequestProperty("Content-Type",
    "application/x-www-form-urlencoded");
 //设置请求体,”account="+account+"&pwd"=pwd
  String body = "account=" + URLEncoder.encode(account, "utf-8")
    + "&pwd=" + URLEncoder.encode(pwd, "utf-8");
  System.out.println(body + "body");

//设置请求头内容,参数一:内容长度。参数二:内容值,是字符串
  conn.setRequestProperty("Content-Length", body.getBytes().length + "");

  //把请求发布到服务器
  conn.setDoOutput(true);

//输出流写入数据
  conn.getOutputStream().write(body.getBytes());
 //取返回结果
  if (conn.getResponseCode() == 200) {
   return conn.getInputStream();
  }

  return null;
 }

3.第三种方式:httpClient方式

public static InputStream byHttpClient(String account, String pwd,
   String webLogin) throws Exception {
  System.out.println("byHttpClient");
 //1.准备一个httpClient客户端
  HttpClient httpClient=new DefaultHttpClient();
 //设置请求方式
  HttpPost httpPost=new HttpPost(webLogin);
 //3.设置请求体的内容

//设置请求体的参数,NameValuePair名值对,键值对
  List<NameValuePair> params=new ArrayList<NameValuePair>();

//添加客户端的传过来的参数到List里
  params.add(new BasicNameValuePair("account", account));
  params.add(new BasicNameValuePair("pwd", pwd));
  UrlEncodedFormEntity entity=new UrlEncodedFormEntity(params, "UTF-8");

//设置请求体
  httpPost.setEntity(entity);
  
   //执行请求,取得返回结果
  HttpResponse httpResponse = httpClient.execute(httpPost);

 //取得请求码getStatusLine.etStatusCode()
  if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
   //取得请求体,以流的方式返回
   return httpResponse.getEntity().getContent();
  }
  return null;
 }


今晚就到这了,相信大家看有所获。晚安。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值