Android开发之OkHttp与HttpURLConnection

OkHttp框架的使用:

要使用该框架首先需要在app/build.gradle文件下的dependencies里面添加:

compile ‘com.squareup.okhttp3.okhttp:3.9.0’(目前这是最新的框架版本)。

具体可去OkHttp了解。

OkHttp的GET请求:

  1. 首先创建一个OkHttp的实例对象,再创建一个Request对象,让后像这个对象封装数据。

  2. 接下来以Request对象为参数创建一个Call对象,再调用execute方法传送数据,返回一个Response对象。

  3. 最后Response对象可调用body方法取出字符串数据。

  4. 利用OkHttp读取百度网页源码:

同步:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
 * Created by Administrator on 2017/11/9.
 */
public class OkHttpTest extends AppCompatActivity{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        OkHttpClient client=new OkHttpClient();
        Request request=new Request.Builder()
                .url("http://www.baidu.com")
                .build();
        try{
            Response response=client.newCall(request).execute();
            String data=response.body().toString();
            Log.d("OkHttpTest",data);
        }catch(Exception e){
            Log.d("OkHttpTest","出错了");
        }
    }
}

异步:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.io.IOException;
import okhttp3.*;
/**
 * Created by Administrator on 2017/11/9.
 */
public class OkHttpTest extends AppCompatActivity{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        OkHttpClient client=new OkHttpClient();
        Request request=new Request.Builder().url("http://www.baidu.com").build();
        //new Call
        Call call=client.newCall(request);
        call.enqueue(new okhttp3.Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.i("Okhttp","onFailure"+e.toString());
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                String result=response.body().string();
                Log.d("Okhttp",result);

            }
        });
    }
}

OkHttp的POST请求:

首先创建一个RequestBody对象来封装要post的内容,如:

RequestBody requestBody=new FormBody.Builder()

.add("username","admin")

.add("password","admin")

.build();

然后创建一个Request对象将url和RequestBody封装进去。

最后和GET请求一样的步骤,传送数据,取回数据。

HttpURLConnection框架的使用:

URL
HttpURLConnection

  1. 首先创建一个URL目标对象,然后调用openConnection()方法获取URLConnection对象。

  2. 再将该对象转换成HttpURLConnection对象。

  3. 然后调用HttpURLConnection对象的setRequestMethod()方法传入URL请求的方法,具体参数可参照API

  4. 最后调用getInputStream()方法网络返回的获取输入流。

  5. 利用HttpURLConnection框架获取百度网页源码:

import android.util.Log;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
/**
 * Created by Administrator on 2017/11/10.
 */
public class HttpURLConnectionTest {
    public HttpURLConnectionTest(){
        try{
            URL url=new URL("http://www.baidu.com/");
            HttpURLConnection httpURLConnection=(HttpURLConnection)url.openConnection();
            httpURLConnection.setConnectTimeout(8000);
            httpURLConnection.setReadTimeout(8000);
            httpURLConnection.setRequestMethod("GET");
            InputStream in=httpURLConnection.getInputStream();
            BufferedReader reader=new BufferedReader(new InputStreamReader(in));
            String str=null;
            StringBuilder response=new StringBuilder();
            while((str=reader.readLine())!=null){
                response.append(str);
            }
            Log.d("HttpURLConnectionTest",response.toString());
            if(reader!=null){
                reader.close();
            }
            if(httpURLConnection!=null){
                httpURLConnection.disconnect();
            }
        }catch (Exception e){
            Log.d("HttpURLConnectionTest","出错了");
        }
    }
}

Json的使用:

  1. 在服务器中创建json文件,如:[{“name”:”Grooter”,”age”:12},{“name”:”Petter”,”age”:22}]

  2. 创建JsonArray对象用来存放json数据集合,然后循环取出json集元素赋给JsonObject对象

  3. 最后调用JsonObject方法取出相应类型的数据。

    public void parseJson(String jsonData){
        try {
            JSONArray jsonArray=new JSONArray(jsonData);
            for(int i=0;i<jsonArray.length();i++){
                JSONObject jsonObject=jsonArray.getJSONObject(i);
                String name=jsonObject.getString("name");
                String age=String.valueOf(jsonObject.getInt("age"));
                Log.d("Json",name);
                Log.d("Json",age);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

猜你喜欢

转载自blog.csdn.net/figurers/article/details/79871551