Java 发送请求有时会影响我的申请

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

在下面的代码中,在我的android应用程序运行数小时后,此代码崩溃,只是应用程序停止,但如果我不关闭wifi连接,如果停止并尝试获取一些资源应用程序崩溃

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("&quot;", "\"");

            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()方法调用此方法。