Android网络技术之HttpURLConnection
来源:互联网 发布:淘宝网禁止有毒化学物 编辑:程序博客网 时间:2024/05/12 07:56
不得不说,安卓开发者们还是很幸运的。
为咋?以前HTTP协议不是有两种方式来访问网络吗,分别是HttpURLConnection和HttpClient,HttpClient的功能在Android6.0系统中被完全删除。
HttpURLConnection继承自URLConnection,因此也可以用于向指定网站发送GET(表示希望从服务器那里获取数据)、POST(表示希望提交数据给服务器)请求。
HttpURLConnection在URLConnection的基础上做了一些改进,增加了一些用于操作HTTP资源的便捷方法。
int getResponseCode() 获取服务器的响应代码 ,
StringgetResponseMessage() 获取发送请求的方法,
String getRequestMethod() 获取发送请求的方法 ,
void setRequestMethod(String method) 获取发送请求的方法。
例子:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="New Button" android:id="@+id/http_button" /> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/http_text" android:layout_width="match_parent" android:layout_height="wrap_content" /> </ScrollView></LinearLayout>
package com.xhm.demo.providertestling;import android.app.Activity;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;public class HttpURLConnectionActivity extends Activity { TextView httpText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_http_urlconnection); Button httpButton=(Button) findViewById(R.id.http_button); httpText=(TextView) findViewById(R.id.http_text); httpButton.setOnClickListener(httpButtonHttpURLConnection); } View.OnClickListener httpButtonHttpURLConnection= new View.OnClickListener() { @Override public void onClick(View v) { new Thread(new Runnable() { @Override public void run() { HttpURLConnection connection=null; BufferedReader reader=null; try { //获取到HttpURLConnection的实例,一般只需new //出一个URL对象,并传入目标的网络地址 URL url=new URL("https://www.baidu.com/"); //然后调用一下openConnection()方法 connection=(HttpURLConnection) url.openConnection(); //设置HTTP请求所使用的方法, connection.setRequestMethod("GET"); //进行一些自由的定制操作,比如:设置连接超时、 // 读取超时的毫秒数等 connection.setConnectTimeout(8000); connection.setReadTimeout(8000); //调用getInputStream()方法获取到服务器返回的输入流 InputStream in=connection.getInputStream(); //下面对获取的输入流进行读取 reader=new BufferedReader(new InputStreamReader(in)); StringBuilder response=new StringBuilder(); String line; while ((line=reader.readLine())!=null){ response.append(line); } showResponse(response.toString()); }catch (Exception e){ e.printStackTrace(); }finally { if (reader!=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } if (connection!=null){ //关闭连接 connection.disconnect(); } } } }).start(); } }; private void showResponse(final String response){ //将线程切换到主线程 runOnUiThread(new Runnable() { @Override public void run() { // 在这里进行UI操作,将结果显示到界面上 httpText.setText(response); } }); }}
“POST”方法怎么用呢?POST是提交数据的,那么在获取输入流之前把要提交的数据写出即可,注意一下数据都是以键值的形式存在,数据与数据之间用“&”隔开。
connection.setRequestMethod("POST");DataOutputStream out=new DataOutputStream(connection.getOutputStream());out.writeBytes("name=android&password=123456");
0 0
- Android网络技术之HttpURLConnection
- Android网络技术之HttpURLConnection
- Android 基础之网络技术-HttpURLConnection
- android网络技术之——HttpURLConnection请求
- Android学习-网络技术HttpURLConnection和OKHttp
- Android之使用网络技术
- Android之网络技术
- Android网络技术之WebView
- Android之网络技术
- Android网络技术之WebView控件
- Android网络技术之OkHttp框架
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- android之HttpURLConnection
- Android之HttpURLConnection编程
- public,private,protected,的作用域,以及不写时的区别
- JQuery Dialog弹出图片
- 快来看看Ubuntu 17.04官方吉祥物长什么样子!
- 【NOI2017模拟4.4】保持平衡【优先队列,贪心】
- v9 数据库数据表结构
- Android网络技术之HttpURLConnection
- 【iOS】生成Appicon图标、为iOS应用添加图标
- LeetCode 485. Max Consecutive Ones
- SqlHelper
- Openwrt:逆向永久修改Flash中的Mac地址
- 【敏捷开发每日一贴】:实时管理系统与自动化
- 区间dp nyoj737 合并石头(一)
- 夜神模拟器连接不上android studio解决方法
- javascript笔记