2014-10-27 87 views
0

我的数据发送到服务器时连接速度快,但当连接速度很慢或缓慢数据不发送我想发送数据时,连接速度慢或我该如何等待连接速度快,然后将数据发布到服务器 下面是我的代码安卓发布数据到服务器时,缓慢连接

class sendMessageN extends AsyncTask<String, String, String> { 

    String mess="no mess",subjector=""; 
    Spanned old_message; 
    int check_no1,success=0; 
    String error = null; 
    public sendMessageN(Spanned newMessage, String subjects,int check_no) { 
     // TODO Auto-generated constructor stub 
     mess = Html.toHtml(newMessage); 
     subjector = subjects; 
     old_message = newMessage; 
     check_no1 = check_no; 
    } 

    protected String doInBackground(String... args) { 
     List<NameValuePair> params = new ArrayList<NameValuePair>(); 
     params.add(new BasicNameValuePair("sender",myAcc)); 
     params.add(new BasicNameValuePair("reciever",filename)); 
     params.add(new BasicNameValuePair("message",mess+"")); 
     params.add(new BasicNameValuePair("subject",subjector)); 
     params.add(new BasicNameValuePair("id_no",check_no1-1+"")); 
     for(int i=0;i < 10;i++){ 
      HttpPost request = new HttpPost(send_text); 
      HttpParams httpParams = new BasicHttpParams(); 
      int some_reasonable_timeout = (int) (30 * DateUtils.SECOND_IN_MILLIS); 
      HttpConnectionParams.setConnectionTimeout(httpParams, some_reasonable_timeout); 
      HttpConnectionParams.setSoTimeout(httpParams, some_reasonable_timeout); 
      HttpClient client = new DefaultHttpClient(httpParams); 
      try 
      { 
       request.setEntity(new UrlEncodedFormEntity(params)); 
       HttpResponse response = client.execute(request); 
       StatusLine status = response.getStatusLine(); 
       if (status.getStatusCode() == HttpStatus.SC_OK) 
       { 
        ResponseHandler<String> responseHandler = new BasicResponseHandler(); 
        error = responseHandler.handleResponse(response); 
        success = 1; 
       } else { 

       } 
      } catch (ClientProtocolException e) { 
       // Do something else, if wanted. 
      } catch (IOException e) { 
       // Do something else, if wanted. 
      } finally { 
       client.getConnectionManager().shutdown(); 
      } 
      if(success == 1){ 
       i = 10; 
      } 
      if(i == 9 && success == 0){ 
       resend_message(old_message,subjector,check_no1);  
      } 
     } 
     return error; 
    } 

    protected void onPostExecute(String result) { 
     if(result != null){ 
      if (success == 1) { 
      } 
     } 
    } 
} 

回答

0

请检查服务器发布数据之前连接。

首先检查互联网连接是否可用此方法。

public static boolean isNetworkAvailable(Context context) { 
     boolean connected = false; 
     ConnectivityManager mConnManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (mConnManager != null) { 
      NetworkInfo[] netInfo = mConnManager.getAllNetworkInfo(); 
      for (NetworkInfo mNetInfo : netInfo) { 
       if ((mNetInfo.getTypeName().equalsIgnoreCase("WIFI") || mNetInfo.getTypeName().equalsIgnoreCase(
         "MOBILE")) 
         && mNetInfo.isConnected()) { 
        Log.d("", "========== || CONNECTION AVAILABLE || ========="); 
        connected = true; 
       } 
      } 
     } 
     return connected; 
    } 

如果网络连接可用,然后检查网络状态,然后发布数据到服务器!

public static byte getNetworkStatus(Context context) { 
     byte networkStatus = NETWORK_NOT_AVAILABLE; 
     ConnectivityManager mConnManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (mConnManager != null) { 
      NetworkInfo[] netInfo = mConnManager.getAllNetworkInfo(); 
      for (NetworkInfo mNetInfo : netInfo) { 
       if ((mNetInfo.getTypeName().equalsIgnoreCase("WIFI") || mNetInfo.getTypeName().equalsIgnoreCase(
         "MOBILE")) 
         && mNetInfo.isConnected()) { 
        networkStatus = NETWORK_AVAILABLE; 
        Log.d("", "========== || CONNECTION AVAILABLE || ========="); 

       } 
      } 
     } 
     if (networkStatus == NETWORK_NOT_AVAILABLE 
       && (Settings.System.getInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, 0) != 0)) { 
      networkStatus = AIRPLANE_MODE_ON; 
     } 
     return networkStatus; 
    } 
+0

,如果后数据不会发送适当放慢连接如何重新发送数据 – user3789001 2014-10-28 03:46:28

+0

如果coonection缓慢然后存储在SQLite和networkadapter这些数据,并检查网络上的固定时间间隔,然后将数据发送到服务器...否则,我会建议使用syncadapter .. – samsad 2014-10-28 05:06:04

+0

PLZ你可以给我例子或任何链接的syncadapter plz。并感谢您的信息 – user3789001 2014-10-28 08:03:26