public static final MediaType JSON = MediaType.parse("application/json",charset=utf-8);okhttpClient client = new OkhttpClient();String post(String url,String json)throws IOException{RequestBody body = RequestBody.create(JSON,json);Request request = new Request.Builder(url).url().post(body).build();Response response = client.newCall(request).execute();
if(response.isSuccessful()){
return response.body().string();}else{}
3 http文件上傳
一個可以構造RequestBody的builder 叫做MultipartBuilder 當我們需要做類似于表單的上傳上傳的時候就可以用這個File file = new File(Environment.getExternalStorageDirectory(),"demo.mp4");RequestBody fileBody = RequestBody.create(MeidaType.parse("application/octet-stream"), file));RequestBody requestbody = new MultipartBuilder().type(MultipartBuilder.FORm) .addPart(Headers.of( "Content-Disposition","form-data; name=/"username/""), RequestBody.create(null,"123")) .addPart(Headers.of( "Content-Disposition","form-data; name=/"mFile/"; filename=/"wjd.mp4/""), fileBody) .build();Request request = new Request.Builder().url(url).post(requestbody).build();Call call = new OkhttpClient().newCall(request);call.enqueue(new Callback(){});這段代碼是向服務器傳遞了一個鍵值對username:123和一個視頻文件,MultipartBuilder的addPart方法可以添加鍵值對或者文件4 文件下載下載一個文件 用string形式打印響應體 如果小文檔可以十分方便如果太大不要使用這個方法需要使用流的方式來處理bodyPRivate final OkhttpClient client = new OkhttpClient();public void run()throws Exception{Rquest request = new Requst.Builder().url(url).build();Response response = client.newCall(request).execute();if(!response.isSuccessful())throw new IOException(""+response);Headers res= response.headers();for(int i=0;i<res.size();i++){syso(res.name(i)+":"+res.value(i));}syso(res.body().string);}也可以client.newCall(request).enqueue(new Callback(){onFilure(){throwable.printStackTrace();}onResponse(){if(!response.isSuccessful())throw new IOException(""+response);Headers res= response.headers();for(int i=0;i<res.size();i++){syso(res.name(i)+":"+res.value(i));}syso(res.body().string);}});轉載來自:張鴻洋博客 和泡在網上的日子的文章