Java 发送请求有时会影响我的申请
在下面的代码中,在我的android应用程序运行数小时后,此代码崩溃,只是应用程序停止,但如果我不关闭wifi连接,如果停止并尝试获取一些资源应用程序崩溃Java 发送请求有时会影响我的申请,java,android,http,httprequest,send,Java,Android,Http,Httprequest,Send,在下面的代码中,在我的android应用程序运行数小时后,此代码崩溃,只是应用程序停止,但如果我不关闭wifi连接,如果停止并尝试获取一些资源应用程序崩溃 public String getRequest(String url, ArrayList<NameValuePair> nameValuePairs) { HttpParams httpParameters = new BasicHttpParams(); HttpProtocolPa
public String getRequest(String url, ArrayList<NameValuePair> nameValuePairs)
{
HttpParams httpParameters = new BasicHttpParams();
HttpProtocolParams.setContentCharset(httpParameters, HTTP.UTF_8);
HttpProtocolParams.setHttpElementCharset(httpParameters, HTTP.UTF_8);
AndroidHttpClient httpclient = null;
//HttpClient httpclient = null;
try {
httpclient = AndroidHttpClient.newInstance("V");
// httpclient = new DefaultHttpClient(httpParameters);
httpclient.getParams().setParameter("http.protocol.content-charset", HTTP.UTF_8);
HttpPost httppost = new HttpPost(url);
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
HttpResponse response = httpclient.execute(httppost);
if((response != null) && (response.getStatusLine().getStatusCode() != 200))
{
int code = response.getStatusLine().getStatusCode();
httpclient.close();
throw new IOException("Bad status code! - "+ code);
}
HttpEntity entity = response.getEntity();
InputStream instream = entity.getContent();
Reader reader = new InputStreamReader(instream, HTTP.UTF_8);
StringBuilder buffer = new StringBuilder("");
char[] tmp = new char[1024];
int l;
while ((l = reader.read(tmp)) != -1) {
buffer.append(tmp, 0, l);
}
reader.close();
try{
if(entity != null){
entity.consumeContent();
}
}catch(Exception e){
if((e != null) && (e.getMessage() != null)){
Log.e("V","Consume content ex-> "+e.getMessage().toString());
}
}
String resp = buffer.toString().replace(""", "\"");
Log.d("V", "RESPONSE:-----\n" + resp + "\n--------------");
try{
httpclient.close();
} catch(Exception e_close){
if((e_close != null) && (e_close.getMessage() != null)){
Log.e("V","Exception in closing"+e_close.getMessage().toString());
}
Log.e("V","Exception - closing http unsuccessfully!");
}
return resp;
} catch (IOException e){
Log.e("V IOException [Send Request]","IO Ex");
if((e != null) && (e.getMessage() != null)){
Log.e("V",e.getMessage().toString());
}
return "";
} catch (Exception e) {
Log.e("V Exception [Send Request]","Exception Requester");
if((e != null) && (e.getMessage() != null)){
Log.e("V",e.getMessage().toString());
}
return "";
}finally {
if (httpclient != null && httpclient.getConnectionManager() != null) {
httpclient.getConnectionManager().shutdown();
httpclient = null;
}
}
}
publicstringgetrequest(字符串url,ArrayList nameValuePairs)
{
HttpParams httpParameters=新的BasicHttpParams();
HttpProtocolParams.setContentCharset(httpParameters,HTTP.UTF_8);
HttpProtocolParams.setHttpElementCharset(httpParameters,HTTP.UTF_8);
AndroidHttpClient httpclient=null;
//HttpClient HttpClient=null;
试一试{
httpclient=AndroidHttpClient.newInstance(“V”);
//httpclient=新的默认httpclient(httpParameters);
httpclient.getParams().setParameter(“http.protocol.content字符集”,http.UTF_8);
HttpPost HttpPost=新的HttpPost(url);
setEntity(新的UrlEncodedFormEntity(nameValuePairs,HTTP.UTF_8));
HttpResponse response=httpclient.execute(httppost);
if((response!=null)&&(response.getStatusLine().getStatusCode()!=200))
{
int code=response.getStatusLine().getStatusCode();
httpclient.close();
抛出新IOException(“错误状态代码!-”+代码);
}
HttpEntity=response.getEntity();
InputStream instream=entity.getContent();
Reader Reader=新的InputStreamReader(instream,HTTP.UTF_8);
StringBuilder缓冲区=新StringBuilder(“”);
char[]tmp=新字符[1024];
int l;
while((l=读卡器读取(tmp))!=-1){
追加缓冲区(tmp,0,l);
}
reader.close();
试一试{
如果(实体!=null){
entity.consumercontent();
}
}捕获(例外e){
如果((e!=null)&(e.getMessage()!=null)){
Log.e(“V”,“消费内容ex->”+e.getMessage().toString());
}
}
字符串resp=buffer.toString().replace(“”,“\”);
Log.d(“V”,“响应:--\n”+resp+“\n-----------------”;
试一试{
httpclient.close();
}捕获(异常e_关闭){
if((e_close!=null)和&(e_close.getMessage()!=null)){
Log.e(“V”,“关闭时异常”+e_close.getMessage().toString());
}
Log.e(“V”,“异常-关闭http失败!”);
}
返回响应;
}捕获(IOE异常){
Log.e(“V IOException[Send Request],“IO Ex”);
如果((e!=null)&(e.getMessage()!=null)){
Log.e(“V”,e.getMessage().toString());
}
返回“”;
}捕获(例外e){
Log.e(“V异常[发送请求],“异常请求者”);
如果((e!=null)&(e.getMessage()!=null)){
Log.e(“V”,e.getMessage().toString());
}
返回“”;
}最后{
if(httpclient!=null&&httpclient.getConnectionManager()!=null){
httpclient.getConnectionManager().shutdown();
httpclient=null;
}
}
}
你确定吗,如果你的应用程序无法发送请求,我想你请求的服务器可能没有运行或没有响应,那么只有你面对它,确保它不是服务器无法响应。类似的任务也应该始终作为异步任务执行。请注意,您正在AsyncTaskDebug中执行此操作。调试消息来自此应用程序,我从AsyncTask-doInBackground()方法调用此方法。