寫在前面
最近感覺自己看了不少東西,不過在上班所以并沒有很多的時間來寫東西。我有一些半成品不過都不想發(fā)出來,畢竟缺少一點自己的東西在里面。好了日常嘮嗑(1/1)。
背景
前面也說了最近在上班,接觸到的項目里用的都是被拋棄的httpclient,說實話這小項目我覺得我是有能力重構的。所以最近著手重構,重構之前首先選定要拿什么做。經(jīng)過慎重的思考之后決定:項目盡量采用MVC的模式做,網(wǎng)絡請求用okhttp(用hongyang封裝的okhttp-utils),圖片的處理和加載想采用glide,但是目前來看還有一些問題。好了背景介紹到這,下面說坑。
坑
既然采用Okhttp來重寫網(wǎng)絡請求,我當然得挑幾個出來跑一下試試。這一試問題就出來了,見下圖:

error.png
415介質錯誤,等等,難道我請求寫的有問題?好吧,真有可能,可能因為自己平時就粗心大意的。
OkHttpUtils.postString()
// .mediaType(MediaType.parse("application/json; charset=utf-8"))
.content(jo.toString())
.addHeader("tkn", "--")
.addHeader("uid", "--")
.addHeader("Content-Type", "application/json")
.url(" ")
.build()
.execute(new BitmapCallback() {
@Override
public void onError(Call call, Exception e, int id) {
e.printStackTrace();
tvTest.setText("納尼,竟然會錯?");
}
@Override
public void onResponse(Bitmap response, int id) {
ivImg.setImageBitmap(response);
}
});
tkn和uid是驗證登錄的東西,這個東西我肯定是寫的沒錯的,我這個請求我仔細看了一遍也沒發(fā)現(xiàn)哪出了問題。但錯就在那?。?/p>
可能有細心的看官已經(jīng)發(fā)現(xiàn)了,我注釋了一行。是的,那一行就是解決問題的方法。在http頭里面聲明"Content-Type", "application/json"在okhttp里面是沒什么卵用的,okhttp中需要在mediaType中聲明介質類型。
小結
最近由于工作先后接觸了HttpUrlConnection、HttpClient、okhttp,感覺api有的差不多,有的差別很大,關鍵還是你對于http協(xié)議的理解。只要你對http有一定的了解,對于一個有良好設計的東西來說找到對應的api是很容易的。