Content-Type:application/x-www-form-urlencoded 数据被编码为名称/值对,默认类型
Content-Type:multipart/form-data 数据被为一条信息,一般用于文件上传;
Content-Type:application/octet-stream 提交二进制数据,如果用于文件上传,只能上传一个文件
Content-Type:application/json 提交json数据
Get同步请求:
安卓当中要完成Get同步请求网络的请求必须要启动一个子线程 Request 创建请求对象 Builder() 构建器 url(url) 服务器的域名 build 返回请求对象Request实例对象 Call 准备好请求的对象 okHttpClient.newCall(request) 得到一个准备好请求的Call对象 call.execute() 调用execute进行同步请求,得到一个请求响应对象 Response 请求响应对象
findViewById(R.id.bt1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread() {
@Override
public void run() {
Request request = new Request.Builder().url("https://www.httpbin.org/get?a=1&b=2").build();
Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
Log.i("TAG", "Get同步请求" + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
});
Get异步请求:
call.enqueue 异步请求,传入回调对象 Callback 回调对象,需要重写onFailure请求失败的回调和onResponse结束的回调,只代表和服务器的请求结束
findViewById(R.id.bt2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Request request = new Request.Builder().url("https://www.httpbin.org/get?a=1&b=2").build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {
Log.i("TAG", "Get异步请求" + response.body().string());
}
}
});
}
});
post同步请求:
FormBody 代表一个form表单的请求体(就是需要提交的数据)通过构建器访问add添加数据(以键值对存储)
post(requestBody) 需要在请求对象(Request)中表名是用post方式请求,默认是Get请求。参数是定义的一些上传的数据或文件和上传文件的规则
调用execute进行同步请求(同上)
findViewById(R.id.bt3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(){
@Override
public void run() {
FormBody formBody=new FormBody.Builder().add("a","1").add("b","2").build();
Request request=new Request.Builder().url("https://www.httpbin.org/post").post(formBody).build();
Call call=okHttpClient.newCall(request);
try {
Response response=call.execute();
Log.i("TAG", "post同步请求"+response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
}
});
post异步请求: 和同步请求差不多一致。 enqueue异步请求,传入回调对象。(看Get请求调用异步)
findViewById(R.id.bt4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FormBody formBody=new FormBody.Builder().add("a","1").add("b","2").build();
Request request=new Request.Builder().url("https://www.httpbin.org/post").post(formBody).build();
Call call=okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
Log.i("TAG", "post异步请求 "+response.body().string());
}
});
}
});
|