您的位置:首页 > 理论基础 > 计算机网络

[置顶] okhttp 网络请求添加请求头,get和post请求,表单提交 ,二进制流

2017-05-15 16:50 507 查看
Okhttp 加请求头

适用于get请求 post请求 put请求(本人亲自测试)

get请求

String uri = Constant.URL + Constant.KNOWLEDGE + “?type=” + “1” + “&page=” + “15” + “&rows=” + “999”;

final Request.Builder builder = new Request.Builder().url(uri);

builder.addHeader(“sessionId”, sessionId); //将请求头以键值对形式添加,可添加多个请求头

Log.e(TAG, “initData: ” + sessionId);//大神不要笑,打印了一下传的值

//sessionId” 这个请求头文,sessionId 传的值

final Request request = builder.build();

final OkHttpClient client = new OkHttpClient.Builder()

.readTimeout(30, TimeUnit.SECONDS)

.connectTimeout(10, TimeUnit.SECONDS)

.writeTimeout(60, TimeUnit.SECONDS)

.build(); //设置各种超时时间

final Call call = client.newCall(request);

call.enqueue(new Callback() {

@Override

public void onFailure(Call call, IOException e) {

//失败的情况

Log.e(TAG,“onFailure:” +e );

}

@Override
public void onResponse(Call call, Response response) throws IOException {
/**
*打印后台返回结果
*/
Log.e(TAG, "onResponse: " + response.body().string());

}
});


post 请求

表单方式提交数 + 请求头 + 二进制流上传(图片)

String uri = Constant.URL + Constant.URL_A2_B;

RequestBody req = RequestBody.create(MediaType.parse(“image/png”), String.valueOf

(Arrays.asList(imageItem)));//转化成数组

// RequestBody req = RequestBody.create(MediaType.parse(“image/png”), String.valueOf

(Arrays.asList(imageItem)));上面这里是把图片转成二进制流 在传输给服务器

//addFormDataPart 穿参数的方法 addPart h

RequestBody requestBody = new MultipartBody.Builder()
.addFormDataPart("workOrderContent", GDMS)
.addFormDataPart("deviceCode", deviceCode)
.addFormDataPart("workOrderType", workorderGDNX.getText().toString())
.addFormDataPart("priority", workorderYXJ.getText().toString())
.addFormDataPart("createUser", userid)
.addFormDataPart("leader", userid)
.addFormDataPart("workPlan", GZJH)
.addFormDataPart("workOrderActual", "1")
.addPart(req)
.build();
final Request request = new Request.Builder()
.url(uri)
.post(requestBody)
.addHeader("sessionId", sessionId)//这个添加请求头文件和传输的值
.build();
final OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(30, TimeUnit.SECONDS)
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(60, TimeUnit.SECONDS)
.build(); //设置各种超时时间
final Call call = client.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.e(TAG, "onResponse: " + response.body().string());

}
});


put请求

还没有用到put加请求头文件,你看了post 还不会put请求吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: