【已解决】 OKhttp使用Get请求获取服务端数据中文出现转码
private void searchItems(GetNewImagePath getUploadImgPath) {
items=getUploadImgPath.getItems();
String netImagePath=items.getItem().getName();
OkHttpClient okHttpClient=new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.build();
BASE_URL_SEARCH=BASE_URL_UPLOAD+
"imgid="+netImagePath+"&cat="+
"&api_name=item_search_img"+
"&lang=zh-CN"+
"&key="+TEL_KEY+
"&secret="+SECRET;
Request request=new Request.Builder()
.get()
.url(BASE_URL_SEARCH)
.build();
Call task=okHttpClient.newCall(request);
task.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
Log.d(TAG,"on Failure --> "+e.toString());
}
@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
int code=response.code();
Log.d(TAG,"code --> "+code);
//返回的内容
ResponseBody body=response.body();
Log.d(TAG,"body --> "+body.string());
}
});
}
老师,我跟着你的OKhttp的课程从网上一个API获取数据,但获取的数据中中文全部显示的是编码的格式,如下
body -->
[{"title":"\u5ba0\u7269\u7528\u54c1\u5c0f\u732b\u54aa\u6a58\u732b\u8116\u5b50pu\u76ae\u91d1\u5c5e\u53ef\u5b9a\u5236\u523b\u5b57\u732b\u5e26\u9879\u5708\u65e0\u58f0\u9632\u4e22\u732b\u724c",
"pic_url":"\/\/gsearch3.alicdn.com\/img\/bao\/uploaded\/i4\/O1CN01Jwd6iw1lJzG21PGKA_!!2200738604799.jpg",
"promotion_price":"29.00",
"price":"58.00",
"sales":1,
"num_iid":"591087517401",
"post_fee":"5.00",
"sample_id":"\u5ba0\u7269\u7528\u54c1\u5c0f\u732b\u54aa\u6a58\u732b\u8116\u5b50pu\u76ae\u91d1\u5c5e\u53ef\u5b9a\u5236\u523b\u5b57\u732b\u5e26\u9879\u5708\u65e0\u58f0\u9632\u4e22\u732b\u724c",
"seller_nick":"\u592a\u5b50\u4e0d\u662f\u72f8\u732b",
"area":"\u6c5f\u82cf \u5357\u901a",
"detail_url":"\/\/item.taobao.com\/item.htm?id=591087517401"}
其中,title、sample_id、seller_id、area这些数据应该是显示成中文的,但不知道为什么在这里都是显示成这样,似乎是一种编码形式,但我已经在URL里面加了lang=zh-CN了,不知道为什么显示还是这种编码的格式
我已经在URL里面加了lang=zh-CN了,笑 话。这你得找后台去呀。这是unicode编码,你自己转一下也行。后台统一处理比较好。要不各大平台都要转。