《第9章 使用HTTP协议访问网络》 总结2 使用HttpURLConnection和OkHttp

HttpURLConnection的使用

  1. 获取HttpURLConnection对象实例

    1. new一个URL 对象 ,传入目标的网络地址:URL url = new URL("https://www.baidu.com");
    2. 调用URL对象的openConnection()方法:HttpURLConnection connection = (HttpURLConnection)url.openConnection();
  2. 设置HTTP请求使用的方法:GETPOST

    1. connection.setRequestMethod(“GET”);
    2. connection.setRequestMethod(“POST”);
      DataOutputStream out= new DataOutputStream(connecton.getOutputStrem());
      out.write(“username=admin&password=123456”);
  3. 接下来可以进行一个自由的定制,比如连接超时,读取超时的毫秒数,以及服务器希望得到的一些消息头等,例如:

    connection.setConnectionTimeout(8000);
    connection.setReadTimeout(8000);
    
  4. 获取服务器的返回流:
    InputStream in = connection.getInputStream()

  5. 将连接关闭:
    connection.disconnect()


布局文件中可以使用一个新的控件ScrollView(滑动布局)

  1. 在活动中利用HttpURLConnection来发送消息请求、获取消息响应

    private void sendRequestWithHttpURLConnection(){
    //开启线程来发起网络请求
    	new Thread(new Runnable(){
    		HttpURLConnection connection = null;
    		BufferedReader reader = null;
    		try{
    			URL url = new URL("https://www.baidu.com");
    			connectoin=(HttpURLConnection)url.openConnection();	
    			connection.setRequestMethod("GET");
    			connection.setConnecteTimeout(8000);
    			connection.setReadTimeout(8000);
    			InputStream in = connection.getInputStream();	//下面对获取到的流对象进行读取
    			reader = new BufferedReader(new InputStreamReader(in));
    			StringBuilder response = new StringBuilder();
    			String line = null;
    			while((line=reader.readLine())!=null)
    				response.append(line);
    			showResponse(response.toString());
    		}catch(Exception e){
    			e.printStackTrace();
    		}finally{
    			if(reader!=null){
    				try{
    					reader.close();
    				}catch(Exception e){
    					e.printStackTrace();
    				}
    			if(connection!=null)
    				connection.disconnect();
    		}
    			
    }).start();
    }
    
    private void showResponse(final String response){
    	runOnUiThread(new Runnable(){
    		@Override
    		public void run(){
    		//在这里进行UI操作,将结果显示在界面上
    		responseText.setText(response)
    		}
    	});
    }
    			
    

Android不允许在子线程中进行UI操作,调用runOnUiThread()可以切换到主线程中。


声明网络权限:

<uses-permission android:name="android.permission.INTERNET"></users-persmission>

##使用OkHttp

OkHttp项目地址:https://github.com/square/okhttp

先在build.gradle中添加对OkHttp的依赖:

implementation ‘com.squareup.okhttp3:okhttp:4.3.1’

  1. 创建一个OkHttpClient对象:OkHttpClient client = new OkHttpClient();
  2. 如果想要发起一条HTTP请求,就必须创建一个Request对象:
    1. “GET”:Request request = new Request.Builder().url("https://www.baidu.com").build();
    2. “POST”:
      RequestBody requestBody = new FormBody.builder().add("username","admin").add("password","123456").build();
      Request request = new Requst.Builder().url("https:www.baidu.com").post(requestBody).build();
      
  3. 发起请求,并得到返回数据
    Response response = client.newCall(request).execute();
  4. 得到返回的具体内容:
    String responseData = response.body().string()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值