今天在安卓上写了一个调用服务器接口的小demo,然后发现多连接几次服务器程序就闪退,想了半天也不知道原因,后来把静态化的httpclient变成每一次请求都初始化一次,就再也没有问题了,这是正常了以后的代码
public Poem getOnePoem() {
try {
String baseUrl = "http://ip地址:8080/PoemServer/Poem/";
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet get = new HttpGet(baseUrl+"getOneRandomPoem");
HttpResponse response= httpClient.execute(get);
HttpEntity entity = response.getEntity();
Map<String, String> maps = gson.fromJson(EntityUtils.toString(entity), new TypeToken<Map<String, String>>(){}.getType());
if(maps.get("code").equals("200")){
Poem poem = gson.fromJson(maps.get("data"), Poem.class);//new TypeToken<Poem>() {}.getType());
return poem;
}
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
之前是在类中写了
static DefaultHttpClient httpClient = new DefaultHttpClient();
static HttpGet get = new HttpGet(baseUrl+"getOneRandomPoem");
static HttpResponse response= httpClient.execute(get);
static HttpEntity entity = response.getEntity();
然后总是连接几次就闪退,原因是因为在安卓中,进行网络请求要放在线程中,请求太快静态变量不是线程安全的,所以最好将方法加一个线程锁或者是每次请求初始化一次。
分享到:
相关推荐
本开发实例将带你深入理解如何在Android项目中使用`HttpClient`进行网络请求,实现数据的获取和上传。 首先,`HttpClient`是Apache的一个开源项目,它提供了一个强大的API来处理HTTP协议。`commons-httpclient-3.1....
Android 9.0 httpclient导致崩溃,找不到httpclient相关类,将包放入lib下即可
在Android开发中,HttpClient是一个广泛使用的库,用于执行HTTP请求,比如GET、POST以及文件上传等操作。这个库特别适用于那些需要与Web服务进行交互的应用程序。本篇将详细讲解如何利用Apache HttpClient及其相关的...
Android使用HttpClient发送请求、接收响应很简单,只要如下几步即可: Step1:创建HttpClient对象; Step2:如果需要发送GET请求,则创建HttpGet对象; 如果需要发送POST请求,则创建HttpPost对象; Step3:如果...
Android 使用HttpClient代理
这个压缩包"安卓文件下载上传解压相关-Android使用HttpClient实现上传下载功能并监控进度.rar"提供了使用HttpClient实现这些功能的示例代码。HttpClient是一个Java库,它允许开发者创建HTTP请求,支持包括下载和上传...
在Android应用中,由于HttpClient的线程安全问题,通常会创建一个单例来管理HttpClient实例,以避免并发问题。此外,由于Android系统的限制,从API Level 19开始,HttpClient默认不再支持SSL。如果需要与HTTPS服务器...
在移动开发领域,Android平台上的网络通信是一个至关重要的环节,HttpClient作为早期广泛使用的网络请求库,对于许多开发者来说并不陌生。本资源"Android_HttpClient_jar包+HttpClientJarAndSource"包含了HttpClient...
在Android开发中,有时我们需要通过HTTP客户端(HttpClient)来实现网络请求,特别是在处理需要通过代理服务器下载文件的场景。本文将深入探讨如何在Android中使用HttpClient进行代理设置,并结合具体的例子来阐述...
NULL 博文链接:https://eagalwood.iteye.com/blog/2323296
自己对HttpClient的简单封装,目前只封装了post方式的请求
在Android中,我们可以使用`AndroidHttpClient`,它是`HttpClient`的一个优化版本,更适合Android平台。 #### 1.1 配置HttpClient访问HTTPS(不验证证书) ```java // 创建HttpClient实例 HttpClient httpClient =...
在Android开发中,有时我们需要将本地的文件上传到服务器,例如图片、音频或者视频等。在本实例中,我们将探讨如何使用Apache的HttpClient库来实现这个功能。HttpClient是一个强大的HTTP客户端,它允许开发者发送...
在Android开发中,联网请求是应用与服务器交互的基础,用于获取或发送数据。常见的联网请求方式有两种:HttpURLConnection和HttpClient。下面将详细讲解这两种方法,以及它们如何处理POST和GET请求。 **...
在Android开发中,网络通信是应用的核心功能之一,而`Android Asynchronous HTTPClient`(也称为AsyncHttpClient)是一个流行的库,用于实现异步HTTP请求,它使得开发者可以在不阻塞主线程的情况下执行网络操作,...
在Android开发中,HTTPClient是一个常用的库,用于与服务器进行HTTP通信。本篇文章将深入探讨“安卓httpclient用到的两个包”——`httpmime-4.0.3.jar`和`apache-mime4j-0.6.jar`,以及它们在HTTP请求中的作用。 ...
是android的jar中httpclient的源码,是org.apache.http包的源码。其中包含org.apache.http.HttpResponse类。 不是官网上下载的,官网上的源码里面没有org.apache.http.HttpResponse这个类。
在Android应用程序中,`HttpClient`经常被用于实现网络通信,比如上传或下载文件。下面将详细讨论`HttpClient`在Android中的应用及其相关知识点。 一、`HttpClient`基础 1. `HttpClient`类:它是整个框架的核心,...
HttpClient提供了一套完整的机制,可以设置请求头、处理Cookie、管理连接池,这在爬虫开发中非常有用。 在使用HttpClient时,有几个关键概念需要理解: 1. **HttpParams**: 这是用来设置HttpClient参数的对象,如...
然而,如果你仍然选择使用HttpClient,务必处理好权限问题,特别是在Android 6.0(API级别23)及以上版本,需要在运行时请求`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 ImageWithProgress这个文件...