首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpGet,HttpClient,HttpResponse,HttpEntity,EntityUtils

HttpGet,HttpClient,HttpResponse,HttpEntity,EntityUtils
EN

Stack Overflow用户
提问于 2016-03-23 04:47:26
回答 2查看 1.5K关注 0票数 2

我使用的是23,我有以下警告

这是我的密码

代码语言:javascript
复制
@Override
    protected Boolean doInBackground(String... urls) {
        String strNama[], strDeskripsi[], strFoto[], strMarker[], strLng[], strLat[];

        try {
            HttpGet httppost = new HttpGet(urls[0]);
            HttpClient httpclient = new DefaultHttpClient();
            HttpResponse response = httpclient.execute(httppost);
            int status = response.getStatusLine().getStatusCode();
            if (status == 200) {
                HttpEntity entity = response.getEntity();
                String data = EntityUtils.toString(entity);
                JSONObject jsono = new JSONObject(data);
                JSONArray konten = jsono.getJSONArray("konten");
                strNama = new String[konten.length()];
                strDeskripsi = new String[konten.length()];
                strFoto = new String[konten.length()];
                strMarker = new String[konten.length()];
                strLat = new String[konten.length()];
                strLng = new String[konten.length()];
                for (int i = 0; i < konten.length(); i++) {
                    JSONObject object = konten.getJSONObject(i);
                    strNama[i] = object.getString("nama");
                    strDeskripsi[i] = object.getString("deskripsi");
                    strFoto[i] = object.getString("foto");
                    strMarker[i] = object.getString("marker");
                    strLat[i] = object.getString("lat");
                    strLng[i] = object.getString("lng");
                    Actors actor = new Actors();
                    actor.setName(strNama[i]);
                    actor.setDescription(strDeskripsi[i]);
                    actor.setImage(strFoto[i]);
                    actor.setMarker(strMarker[i]);
                    actor.setLat(strLat[i]);
                    actor.setLng(strLng[i]);
                    actorsList.add(actor);
                }
                return true;
            }

        } catch (ParseException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return false;
    }

这是模块

代码语言:javascript
复制
android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId "com.krb.navigasi.petakebunrayabogor"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
}

它在Android5.0中运行良好,但是如何解决这些警告呢?我希望有人能帮我修复上面的代码。任何帮助都将不胜感激。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-23 06:51:13

先初始化这个,然后同步

代码语言:javascript
复制
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.cli‌​ent:4.1.2'
票数 0
EN

Stack Overflow用户

发布于 2016-03-23 05:50:08

已经有人回答说,上面提到的类已经被废弃了,所以Android文档建议您使用HttpURLConnection,在这里您可以自己处理网络调用,确保将它们从主线程中删除。

给定了下面的例子,您可以使用POST实现实体的HttpURLConnection

代码语言:javascript
复制
            HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();
            httpURLConnection.setDoOutput(true);
            httpURLConnection.setRequestMethod("POST"); // hear you are telling that it is a POST request, which can be changed into "PUT", "GET", "DELETE" etc.
            httpURLConnection.setRequestProperty("Content-Type", "application/json"); // here you are setting the `Content-Type` for the data you are sending which is `application/json` 
            httpURLConnection.connect();

当您将一些数据发布到HttpURLConnection实例时,您可以这样做.

代码语言:javascript
复制
            JsonObject jsonObject = new JsonObject();
            jsonObject.addProperty("para_1", "arg_1");
            jsonObject.addProperty("para_2", "arg_2");

            DataOutputStream wr = new DataOutputStream(httpURLConnection.getOutputStream());
            wr.writeBytes(jsonObject.toString());
            wr.flush();
            wr.close();

由于这个类与android框架捆绑在一起,所以不需要添加任何库,但我建议您使用类似于OkHTTP的工具,

这将处理其他线程的网络调用,并给出示例说明如何发布

代码语言:javascript
复制
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();
  return response.body().string();
}

这个例子是在主线程上调用网络调用,您更希望这样做:

代码语言:javascript
复制
    okHttpClient.newCall(request).enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {

        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {

        }
    });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36170043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档