android开发中比较经常使用的一个http框架是Volley,这个框架是基于httpclient开发的,在android6.0中,google将httpclient这个API废弃掉了。发送http请求时使用httpurlconnection这个API。OkHttp是基于httpurlconnection的一个框架。
十分简陋的UI
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="ok http测试"
android:textSize="24sp" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="get"
android:text="GET" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:onClick="post"
android:text="POST" />
</LinearLayout>
GET请求
public void get(View view) {
OkHttpClient client=new OkHttpClient();
Request request=new Request.Builder()
.url("http://192.168.1.100:8000/okhttp/")
.build();
Call call=client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Response response) throws IOException {
System.out.println(response.body().string());
}
@Override
public void onFailure(Request request, IOException arg1) {
}
});
}
POST请求
public void post(View view) {
String str="123";
MediaType type=MediaType.parse("Content-Type:text/plain;charset:utf-8;");
OkHttpClient client=new OkHttpClient();
RequestBody body=RequestBody.create(type, str);
Request request=new Request.Builder()
.url("http://192.168.1.100:8000/okhttp/")
.post(body)
.build();
Call call=client.newCall(request);
call.enqueue(new Callback() {
@Override
public void onResponse(Response response) throws IOException {
System.out.println(response.body().string());
}
@Override
public void onFailure(Request arg0, IOException arg1) {
}
});
}
在数据交换中可以灵活使用数据交换格式,这里使用的是字符串。OkHttp构造完请求体就可以回调了,使用过程和Volley类似。在onResponse回调请求成功的结果,在onFailure回调请求失败的结果。
注:OkHttp的jar包内部依赖okio,两个要一起引用