相关疑难解决方法(0)

Apache HttpClient API中的CloseableHttpClient和HttpClient有什么区别?

我正在研究我们公司开发的应用程序.它使用Apache HttpClient库.在源代码中,它使用HttpClient类来创建连接到服务器的实例.

我想了解Apache HttpClient,我已经通过这组示例了解.所有示例都使用CloseableHttpClient而不是HttpClient.所以我认为CloseableHttpClient是一个扩展版本HttpClient.如果是这种情况,我有两个问题:

  • 这两者有什么区别?
  • 建议将哪个类用于我的新开发?

java apache http apache-httpclient-4.x

63
推荐指数
5
解决办法
11万
查看次数

无法获得OkHttp的response.body.toString()来返回一个字符串

我正在尝试使用OkHttp获取一些json数据,并且无法弄清楚为什么当我尝试记录response.body().toString()我得到的是Results:? com.squareup.okhttp.Call$RealResponseBody@41c16aa8

try {
        URL url = new URL(BaseUrl);
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url(url)
                .header(/****/)
                .build();

        Call call = client.newCall(request);
        Response response = call.execute();

        **//for some reason this successfully prints out the response**
        System.out.println("YEAH: " + response.body().string());

        if(!response.isSuccessful()) {
            Log.i("Response code", " " + response.code());
        }

        Log.i("Response code", response.code() + " ");
        String results = response.body().toString();

        Log.i("OkHTTP Results: ", results);
Run Code Online (Sandbox Code Playgroud)

日志

我不知道我在这里做错了什么.我如何获得响应字符串?

java android okhttp

59
推荐指数
3
解决办法
6万
查看次数

如何让HttpClient返回状态码和响应体?

我试图让Apache HttpClient触发HTTP请求,然后显示HTTP响应代码(200,404,500等)以及HTTP响应正文(文本字符串).重要的是要注意我正在使用,v4.2.2因为大多数HttpClient示例来自v.3.x.x,并且API从版本3变为版本4.

不幸的是,我只能让HttpClient返回状态代码响应体(但不是两者).

这就是我所拥有的:

// Getting the status code.
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://whatever.blah.com");
HttpResponse resp = client.execute(httpGet);

int statusCode = resp.getStatusLine().getStatusCode();


// Getting the response body.
HttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet("http://whatever.blah.com");
ResponseHandler<String> handler = new BasicResponseHandler();

String body = client.execute(httpGet, handler);
Run Code Online (Sandbox Code Playgroud)

所以我问:使用该v4.2.2库,如何从同一个client.execute(...)调用中获取状态代码和响应正文?提前致谢!

java http apache-httpclient-4.x

45
推荐指数
4
解决办法
9万
查看次数

Android:Out of Memory错误StringBuilder

在我的应用程序中,我以JSON的形式从服务器获取数据.数据大约为1.5 MB.该应用程序可以工作,但有时它会在从服务器获取OutOfMemoryError的数据时崩溃.

这是我的方法:

private String sendPostRequest(String url, List<NameValuePair> params)
        throws Exception {
    String ret = null;

    BufferedReader bufferedReader = null;
    HttpClient httpClient = new DefaultHttpClient();
    HttpPost request = new HttpPost(url);

    try {
        UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);
        request.setEntity(entity);

        HttpResponse response = httpClient.execute(request);

        bufferedReader = new BufferedReader(new InputStreamReader(response
                .getEntity().getContent()));
        StringBuilder stringBuilder = new StringBuilder("");
        StringBuilder stringBuilder2;
        String line = "";
        //String LineSeparator = System.getProperty("line.separator");
        while ((line = bufferedReader.readLine()) != null) {
            stringBuilder.append(line);
        }
        bufferedReader.close();

        ret = stringBuilder.toString();
        stringBuilder = null;

    } …
Run Code Online (Sandbox Code Playgroud)

stringbuilder android out-of-memory httpconnection

11
推荐指数
1
解决办法
1万
查看次数

带有表单数据的 Java Post 请求

我想在 Java 中进行简单的 POST 调用,
我收到 200 响应代码,但是响应消息错误,我被告知在使用表单数据
时有不同的方式进行 Post 调用。以下是我当前用于进行 post 调用的 Java 代码 -


private String makePostCall(){
        try {
            String url = "http://someIp/trusted";
            HttpClient client = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);

            // add header
            List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
            urlParameters.add(new BasicNameValuePair("username", "app_user"));

            post.setEntity(new UrlEncodedFormEntity(urlParameters));

            HttpResponse response = client.execute(post);
            System.out.println("\nSending 'POST' request to URL : " + url);
            System.out.println("Post parameters : " + post.getEntity());
            System.out.println("Response Code : " + response.getStatusLine().getStatusCode());

            BufferedReader rd = new BufferedReader(new …
Run Code Online (Sandbox Code Playgroud)

java post postman

6
推荐指数
2
解决办法
5万
查看次数