亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

OKHttp3如何進行帶參數的post請求

標簽:
Android

看一个okhttp3请求数据的例子:

OkHttpClient client = new OkHttpClient();
RequestBody body = new FormBody.Builder()
        .add("bookid",String.valueOf(mBook.bookid))
        .add("bookName",mBookNameEdit.getText().toString()).build();

final Request request = new Request.Builder()
        .url("http://139.199.89.89/api/v1/books")
        .post(body).build();
Call call = client.newCall(request);
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
        Log.d(TAG,"<<<<e="+e);

    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        if(response.isSuccessful()) {
            String d = response.body().string();
            Log.d(TAG,"<<<<d="+d);
        }
    }
});

post请求创建request和get是一样的,只是post请求需要提交一个表单,就是RequestBody。表单的格式有好多种,普通的表单是:

RequestBody body = new FormBody.Builder()
    .add("键", "值")
    .add("键", "值")
    ...
    .build();

RequestBody的数据格式都要指定Content-Type,常见的有三种:

  • application/x-www-form-urlencoded 数据是个普通表单

  • multipart/form-data 数据里有文件

  • application/json 数据是个json

但是好像以上的普通表单并没有指定Content-Type,这是因为FormBody继承了RequestBody,它已经指定了数据类型为application/x-www-form-urlencoded。

private static final MediaType CONTENT_TYPE = 
MediaType.parse("application/x-www-form-urlencoded");

再看看数据为其它类型的RequestBody的创建方式。

如果表单是个json:

MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, "你的json");

如果数据包含文件:

RequestBody requestBody = new MultipartBody.Builder()
    .setType(MultipartBody.FORM)
    .addFormDataPart("file", file.getName(), RequestBody.create(MediaType.parse("image/png"), file))
    .build();



點擊查看更多內容
2人點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
全棧工程師
手記
粉絲
6509
獲贊與收藏
303

關注作者,訂閱最新文章

閱讀免費教程

感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消