OkHttp框架的使用:
要使用该框架首先需要在app/build.gradle文件下的dependencies里面添加:
compile ‘com.squareup.okhttp3.okhttp:3.9.0’(目前这是最新的框架版本)。
具体可去OkHttp了解。
OkHttp的GET请求:
首先创建一个OkHttp的实例对象,再创建一个Request对象,让后像这个对象封装数据。
接下来以Request对象为参数创建一个Call对象,再调用execute方法传送数据,返回一个Response对象。
最后Response对象可调用body方法取出字符串数据。
利用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目标对象,然后调用openConnection()方法获取URLConnection对象。
再将该对象转换成HttpURLConnection对象。
然后调用HttpURLConnection对象的setRequestMethod()方法传入URL请求的方法,具体参数可参照API
最后调用getInputStream()方法网络返回的获取输入流。
利用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的使用:
在服务器中创建json文件,如:[{“name”:”Grooter”,”age”:12},{“name”:”Petter”,”age”:22}]
创建JsonArray对象用来存放json数据集合,然后循环取出json集元素赋给JsonObject对象
最后调用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();
}
}